Send multi-down/up events to Display Server 13/144313/1
authorJunghoon Park <jh9216.park@samsung.com>
Wed, 16 Aug 2017 08:06:46 +0000 (17:06 +0900)
committerJunghoon Park <jh9216.park@samsung.com>
Wed, 16 Aug 2017 08:06:46 +0000 (17:06 +0900)
- The events for multi-touch were not considered

Change-Id: Iabe2d27f719fb8e2064caf7cfb4473309c07e7f4
Signed-off-by: Junghoon Park <jh9216.park@samsung.com>
screen_connector_watcher_evas/src/screen_connector_toolkit_evas.c

index fdf095b..a8eceae 100644 (file)
@@ -77,6 +77,8 @@ static int __delayed_resuming_time;
 
 static void __rs_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void __rs_cb_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void __rs_cb_touch_multi_down(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void __rs_cb_touch_multi_up(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void __rs_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void __rs_cb_mouse_wheel(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void __rs_cb_show(void *data, Evas *e, Evas_Object *obj, void *event_info);
@@ -184,6 +186,14 @@ static void __destroy_toolkit_evas_h(gpointer data)
                                __rs_cb_mouse_up);
                evas_object_event_callback_del(
                                toolkit_evas_h->img_tbm,
+                               EVAS_CALLBACK_MULTI_DOWN,
+                               __rs_cb_touch_multi_down);
+               evas_object_event_callback_del(
+                               toolkit_evas_h->img_tbm,
+                               EVAS_CALLBACK_MULTI_UP,
+                               __rs_cb_touch_multi_up);
+               evas_object_event_callback_del(
+                               toolkit_evas_h->img_tbm,
                                EVAS_CALLBACK_MOUSE_MOVE,
                                __rs_cb_mouse_move);
                evas_object_event_callback_del(
@@ -533,6 +543,98 @@ static void __rs_cb_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_
                        ev->timestamp);
 }
 
+static void __rs_cb_touch_multi_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       screen_connector_toolkit_evas_h toolkit_evas_h = (screen_connector_toolkit_evas_h)data;
+       Evas_Event_Multi_Down *ev = event_info;
+       const char *desc = evas_device_description_get(ev->dev);
+       int x;
+       int y;
+       int w;
+       int h;
+       struct tizen_remote_surface *surface;
+
+       evas_object_geometry_get(obj, &x, &y, &w, &h);
+
+       LOGD("multi down: %d %d", ev->canvas.x - x, ev->canvas.y - y);
+
+       if (desc == NULL)
+               desc = "";
+
+       if (screen_connector_toolkit_check_input_disabled(toolkit_evas_h->toolkit_h,
+                               SCREEN_CONNECTOR_INPUT_TYPE_MOUSE_UP_DOWN)) {
+               LOGD("multi down disabled");
+               return;
+       }
+
+       surface = screen_connector_toolkit_get_trs(toolkit_evas_h->toolkit_h);
+       if (surface == NULL) {
+               LOGE("surface is NULL");
+               return;
+       }
+
+       tizen_remote_surface_transfer_touch_event(surface,
+                       TIZEN_REMOTE_SURFACE_EVENT_TYPE_TOUCH_DOWN,
+                       ev->device,
+                       1,
+                       ev->canvas.x - x,
+                       ev->canvas.y - y,
+                       wl_fixed_from_double(ev->radius_x),
+                       wl_fixed_from_double(ev->radius_y),
+                       wl_fixed_from_double(ev->pressure),
+                       wl_fixed_from_double(ev->angle),
+                       evas_device_class_get(ev->dev),
+                       evas_device_subclass_get(ev->dev),
+                       desc,
+                       ev->timestamp);
+}
+
+static void __rs_cb_touch_multi_up(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       screen_connector_toolkit_evas_h toolkit_evas_h = (screen_connector_toolkit_evas_h)data;
+       Evas_Event_Multi_Up *ev = event_info;
+       const char *desc = evas_device_description_get(ev->dev);
+       int x;
+       int y;
+       int w;
+       int h;
+       struct tizen_remote_surface *surface;
+
+       evas_object_geometry_get(obj, &x, &y, &w, &h);
+
+       LOGD("multi up: %d %d", ev->canvas.x - x, ev->canvas.y - y);
+
+       if (desc == NULL)
+               desc = "";
+
+       if (screen_connector_toolkit_check_input_disabled(toolkit_evas_h->toolkit_h,
+                               SCREEN_CONNECTOR_INPUT_TYPE_MOUSE_UP_DOWN)) {
+               LOGD("multi up disabled");
+               return;
+       }
+
+       surface = screen_connector_toolkit_get_trs(toolkit_evas_h->toolkit_h);
+       if (surface == NULL) {
+               LOGE("surface is NULL");
+               return;
+       }
+
+       tizen_remote_surface_transfer_touch_event(surface,
+                       TIZEN_REMOTE_SURFACE_EVENT_TYPE_TOUCH_UP,
+                       ev->device,
+                       1,
+                       ev->canvas.x - x,
+                       ev->canvas.y - y,
+                       wl_fixed_from_double(ev->radius_x),
+                       wl_fixed_from_double(ev->radius_y),
+                       wl_fixed_from_double(ev->pressure),
+                       wl_fixed_from_double(ev->angle),
+                       evas_device_class_get(ev->dev),
+                       evas_device_subclass_get(ev->dev),
+                       desc,
+                       ev->timestamp);
+}
+
 static void __rs_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
        screen_connector_toolkit_evas_h toolkit_evas_h = (screen_connector_toolkit_evas_h)data;
@@ -660,6 +762,12 @@ static void __toolkit_update_cb(struct tizen_remote_surface *trs, uint32_t type,
                                EVAS_CALLBACK_MOUSE_UP,
                                __rs_cb_mouse_up, toolkit_evas_h);
                evas_object_event_callback_add(toolkit_evas_h->img_tbm,
+                               EVAS_CALLBACK_MULTI_DOWN,
+                               __rs_cb_touch_multi_down, toolkit_evas_h);
+               evas_object_event_callback_add(toolkit_evas_h->img_tbm,
+                               EVAS_CALLBACK_MULTI_UP,
+                               __rs_cb_touch_multi_up, toolkit_evas_h);
+               evas_object_event_callback_add(toolkit_evas_h->img_tbm,
                                EVAS_CALLBACK_MOUSE_MOVE,
                                __rs_cb_mouse_move, toolkit_evas_h);
                evas_object_event_callback_add(toolkit_evas_h->img_tbm,