pepper: emit pepper input events after send wayland events to clients
authorJunghoon <jh13.son@samsung.com>
Mon, 2 Nov 2015 08:46:41 +0000 (17:46 +0900)
committerJunghoon <jh13.son@samsung.com>
Mon, 2 Nov 2015 08:46:41 +0000 (17:46 +0900)
Change-Id: Ic31725b0c5b5b2c40369946bcbe5cc8931130fe3

src/lib/pepper/keyboard.c
src/lib/pepper/pointer.c
src/lib/pepper/touch.c

index 492ec5b7dafa8f6cea50ee350088589427452691..0922df05b874894f9397e7e45701489025bbbd3d 100644 (file)
@@ -392,9 +392,10 @@ PEPPER_API void
 pepper_keyboard_send_key(pepper_keyboard_t *keyboard, pepper_view_t *view,
                          uint32_t time, uint32_t key, uint32_t state)
 {
-    struct wl_resource *resource;
-    struct wl_client   *client;
-    uint32_t            serial;
+    struct wl_resource     *resource;
+    struct wl_client       *client;
+    uint32_t                serial;
+    pepper_input_event_t    event;
 
     if (!view || !view->surface || !view->surface->resource)
         return;
@@ -407,6 +408,12 @@ pepper_keyboard_send_key(pepper_keyboard_t *keyboard, pepper_view_t *view,
         if (wl_resource_get_client(resource) == client)
             wl_keyboard_send_key(resource, serial, time, key, state);
     }
+
+    event.id = PEPPER_EVENT_KEYBOARD_KEY;
+    event.time = time;
+    event.key = key;
+    event.state = state;
+    pepper_object_emit_event(&view->base, PEPPER_EVENT_KEYBOARD_KEY, &event);
 }
 
 PEPPER_API void
index 2f682179d78043ed0cc696d294ec6b93dee8c347..1d2eef958e795d3076a4a50a827eadb7899596d6 100644 (file)
@@ -368,10 +368,11 @@ PEPPER_API void
 pepper_pointer_send_motion(pepper_pointer_t *pointer, pepper_view_t *view,
                            uint32_t time, double x, double y)
 {
-    struct wl_resource *resource;
-    wl_fixed_t          fx = wl_fixed_from_double(x);
-    wl_fixed_t          fy = wl_fixed_from_double(y);
-    struct wl_client   *client;
+    struct wl_resource     *resource;
+    wl_fixed_t              fx = wl_fixed_from_double(x);
+    wl_fixed_t              fy = wl_fixed_from_double(y);
+    struct wl_client       *client;
+    pepper_input_event_t    event;
 
     if (!view || !view->surface || !view->surface->resource)
         return;
@@ -383,15 +384,22 @@ pepper_pointer_send_motion(pepper_pointer_t *pointer, pepper_view_t *view,
         if (wl_resource_get_client(resource) == client)
             wl_pointer_send_motion(resource, time, fx, fy);
     }
+
+    event.id = PEPPER_EVENT_POINTER_MOTION;
+    event.time = time;
+    event.x = x;
+    event.y = y;
+    pepper_object_emit_event(&view->base, PEPPER_EVENT_POINTER_MOTION, &event);
 }
 
 PEPPER_API void
 pepper_pointer_send_button(pepper_pointer_t *pointer, pepper_view_t *view,
                            uint32_t time, uint32_t button, uint32_t state)
 {
-    struct wl_resource *resource;
-    struct wl_client   *client;
-    uint32_t            serial;
+    struct wl_resource     *resource;
+    struct wl_client       *client;
+    uint32_t                serial;
+    pepper_input_event_t    event;
 
     if (!view || !view->surface || !view->surface->resource)
         return;
@@ -404,15 +412,22 @@ pepper_pointer_send_button(pepper_pointer_t *pointer, pepper_view_t *view,
         if (wl_resource_get_client(resource) == client)
             wl_pointer_send_button(resource, serial, time, button, state);
     }
+
+    event.id = PEPPER_EVENT_POINTER_BUTTON;
+    event.time = time;
+    event.button = button;
+    event.state = state;
+    pepper_object_emit_event(&view->base, PEPPER_EVENT_POINTER_BUTTON, &event);
 }
 
 PEPPER_API void
 pepper_pointer_send_axis(pepper_pointer_t *pointer, pepper_view_t *view,
                          uint32_t time, uint32_t axis, double value)
 {
-    struct wl_resource *resource;
-    wl_fixed_t          v = wl_fixed_from_double(value);
-    struct wl_client   *client;
+    struct wl_resource     *resource;
+    wl_fixed_t              v = wl_fixed_from_double(value);
+    struct wl_client       *client;
+    pepper_input_event_t    event;
 
     if (!view || !view->surface || !view->surface->resource)
         return;
@@ -424,6 +439,12 @@ pepper_pointer_send_axis(pepper_pointer_t *pointer, pepper_view_t *view,
         if (wl_resource_get_client(resource) == client)
             wl_pointer_send_axis(resource, time, axis, v);
     }
+
+    event.id = PEPPER_EVENT_POINTER_AXIS;
+    event.time = time;
+    event.axis = axis;
+    event.value = value;
+    pepper_object_emit_event(&view->base, PEPPER_EVENT_POINTER_AXIS, &event);
 }
 
 PEPPER_API void
index b226e25f86a00fbdbeafd23dabdaaba69a8cd390..aa74d1fb8bb78b7a9a833900e335f3400caa0f66 100644 (file)
@@ -281,6 +281,7 @@ pepper_touch_send_down(pepper_touch_t *touch, pepper_view_t *view,
     wl_fixed_t              fx = wl_fixed_from_double(x);
     wl_fixed_t              fy = wl_fixed_from_double(y);
     pepper_touch_point_t   *point = get_touch_point(touch, id);
+    pepper_input_event_t    event;
 
     if (!point || !view || !view->surface || !view->surface->resource)
         return;
@@ -292,6 +293,12 @@ pepper_touch_send_down(pepper_touch_t *touch, pepper_view_t *view,
         if (wl_resource_get_client(resource) == wl_resource_get_client(surface_resource))
             wl_touch_send_down(resource, point->focus_serial, time, surface_resource, id, fx, fy);
     }
+
+    event.id = PEPPER_EVENT_TOUCH_DOWN;
+    event.time = time;
+    event.x = x;
+    event.y = y;
+    pepper_object_emit_event(&view->base, PEPPER_EVENT_TOUCH_DOWN, &event);
 }
 
 PEPPER_API void
@@ -300,6 +307,7 @@ pepper_touch_send_up(pepper_touch_t *touch, pepper_view_t *view, uint32_t time,
     struct wl_resource     *resource;
     uint32_t                serial;
     pepper_touch_point_t   *point = get_touch_point(touch, id);
+    pepper_input_event_t    event;
 
     if (!point || !view || !view->surface || !view->surface->resource)
         return;
@@ -313,6 +321,10 @@ pepper_touch_send_up(pepper_touch_t *touch, pepper_view_t *view, uint32_t time,
         if (wl_resource_get_client(resource) == wl_resource_get_client(surface_resource))
             wl_touch_send_up(resource, serial, time, id);
     }
+
+    event.id = PEPPER_EVENT_TOUCH_UP;
+    event.time = time;
+    pepper_object_emit_event(&view->base, PEPPER_EVENT_TOUCH_UP, &event);
 }
 
 PEPPER_API void
@@ -323,6 +335,7 @@ pepper_touch_send_motion(pepper_touch_t *touch, pepper_view_t *view, uint32_t ti
     wl_fixed_t              fx = wl_fixed_from_double(x);
     wl_fixed_t              fy = wl_fixed_from_double(y);
     pepper_touch_point_t   *point = get_touch_point(touch, id);
+    pepper_input_event_t    event;
 
     if (!point || !view || !view->surface || !view->surface->resource)
         return;
@@ -334,6 +347,12 @@ pepper_touch_send_motion(pepper_touch_t *touch, pepper_view_t *view, uint32_t ti
         if (wl_resource_get_client(resource) == wl_resource_get_client(surface_resource))
             wl_touch_send_motion(resource, time, id, fx, fy);
     }
+
+    event.id = PEPPER_EVENT_TOUCH_MOTION;
+    event.time = time;
+    event.x = x;
+    event.y = y;
+    pepper_object_emit_event(&view->base, PEPPER_EVENT_TOUCH_MOTION, &event);
 }
 
 PEPPER_API void
@@ -343,6 +362,8 @@ pepper_touch_send_frame(pepper_touch_t *touch, pepper_view_t *view)
 
     wl_resource_for_each(resource, &touch->resource_list)
         wl_touch_send_frame(resource);
+
+    pepper_object_emit_event(&view->base, PEPPER_EVENT_TOUCH_FRAME, NULL);
 }
 
 PEPPER_API void
@@ -352,6 +373,8 @@ pepper_touch_send_cancel(pepper_touch_t *touch, pepper_view_t *view)
 
     wl_resource_for_each(resource, &touch->resource_list)
         wl_touch_send_cancel(resource);
+
+    pepper_object_emit_event(&view->base, PEPPER_EVENT_TOUCH_CANCEL, NULL);
 }
 
 PEPPER_API void