evdev: add initial apis for creating/destroying evdev 51/118751/1
authorSung-Jin Park <sj76.park@samsung.com>
Tue, 14 Mar 2017 03:28:38 +0000 (12:28 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Tue, 14 Mar 2017 03:28:38 +0000 (12:28 +0900)
Change-Id: Ib340feade771246e14e94511d37965447721ebd4
Signed-off-by: Sung-Jin Park <sj76.park@samsung.com>
src/lib/evdev/evdev-internal.h [new file with mode: 0644]
src/lib/evdev/evdev.c [new file with mode: 0644]
src/lib/evdev/pepper-evdev.h [new file with mode: 0644]

diff --git a/src/lib/evdev/evdev-internal.h b/src/lib/evdev/evdev-internal.h
new file mode 100644 (file)
index 0000000..0a70c7a
--- /dev/null
@@ -0,0 +1,37 @@
+#ifndef PEPPER_EVDEV_INTERNAL_H
+#define PEPPER_EVDEV_INTERNAL_H
+
+#include <pepper.h>
+
+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 (file)
index 0000000..1ea0289
--- /dev/null
@@ -0,0 +1,33 @@
+#include <evdev-internal.h>
+#include <pepper-evdev.h>
+
+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 (file)
index 0000000..21593eb
--- /dev/null
@@ -0,0 +1,20 @@
+#ifndef PEPPER_EVDEV_H
+#define PEPPER_EVDEV_H
+
+#include <pepper.h>
+
+#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 */