From: Sung-Jin Park Date: Tue, 14 Mar 2017 03:28:38 +0000 (+0900) Subject: evdev: add initial apis for creating/destroying evdev X-Git-Tag: submit/tizen/20170322.111144~17 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=56e807990716655f88662b2443c3d117ccd0861c;p=platform%2Fcore%2Fuifw%2Fpepper.git evdev: add initial apis for creating/destroying evdev Change-Id: Ib340feade771246e14e94511d37965447721ebd4 Signed-off-by: Sung-Jin Park --- diff --git a/src/lib/evdev/evdev-internal.h b/src/lib/evdev/evdev-internal.h new file mode 100644 index 0000000..0a70c7a --- /dev/null +++ b/src/lib/evdev/evdev-internal.h @@ -0,0 +1,37 @@ +#ifndef PEPPER_EVDEV_INTERNAL_H +#define PEPPER_EVDEV_INTERNAL_H + +#include + +typedef struct pepper_evdev pepper_evdev_t; +typedef struct evdev_device_info evdev_device_info_t; +typedef struct evdev_key_event evdev_key_event_t; + +struct pepper_evdev +{ + pepper_compositor_t *compositor; + struct wl_display *display; + struct wl_event_loop *event_loop; + pepper_list_t key_event_queue; + pepper_list_t device_list; +}; + +struct evdev_device_info +{ + pepper_evdev_t *evdev; + pepper_input_device_t *device; + struct wl_event_source *event_source; + pepper_list_t link; +}; + +struct evdev_key_event +{ + pepper_evdev_t *evdev; + pepper_input_device_t *device; + unsigned int keycode; + unsigned int state; + unsigned int time; + pepper_list_t link; +}; + +#endif /* PEPPER_EVDEV_INTERNAL_H */ diff --git a/src/lib/evdev/evdev.c b/src/lib/evdev/evdev.c new file mode 100644 index 0000000..1ea0289 --- /dev/null +++ b/src/lib/evdev/evdev.c @@ -0,0 +1,33 @@ +#include +#include + +PEPPER_API pepper_evdev_t * +pepper_evdev_create(pepper_compositor_t *compositor) +{ + pepper_evdev_t *evdev = NULL; + + evdev = (pepper_evdev_t *)calloc(1, sizeof(pepper_evdev_t)); + PEPPER_CHECK(evdev, return NULL, "[%s] Failed to allocate memory for pepper evdev...\n", __FUNCTION__); + + evdev->compositor = compositor; + evdev->display = pepper_compositor_get_display(compositor); + evdev->event_loop = wl_display_get_event_loop(evdev->display); + + pepper_list_init(&evdev->device_list); + pepper_list_init(&evdev->key_event_queue); + + return evdev; +} + +PEPPER_API void +pepper_evdev_destroy(pepper_evdev_t *evdev) +{ + if (!evdev) + return; + + pepper_list_remove(&evdev->key_event_queue); + pepper_list_remove(&evdev->device_list); + + free(evdev); +} + diff --git a/src/lib/evdev/pepper-evdev.h b/src/lib/evdev/pepper-evdev.h new file mode 100644 index 0000000..21593eb --- /dev/null +++ b/src/lib/evdev/pepper-evdev.h @@ -0,0 +1,20 @@ +#ifndef PEPPER_EVDEV_H +#define PEPPER_EVDEV_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +PEPPER_API pepper_evdev_t * +pepper_evdev_create(pepper_compositor_t *compositor); + +PEPPER_API void +pepper_evdev_destroy(pepper_evdev_t *evdev); + +#ifdef __cplusplus +} +#endif + +#endif /* PEPPER_EVDEV_H */