e_devicemgr: use ecore event handler insteads of event filter 15/191415/5 accepted/tizen/5.0/unified/20181108.074417 submit/tizen/20181107.044109 submit/tizen_5.0/20181107.044303
authorJengHyun Kang <jhyuni.kang@samsung.com>
Wed, 17 Oct 2018 02:00:48 +0000 (11:00 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Tue, 6 Nov 2018 03:53:55 +0000 (03:53 +0000)
Change-Id: Ieee6c559fed96ab67b0c174d1c1b03bd5437bec0

src/bin/e.h
src/bin/e_devicemgr.h
src/bin/e_devicemgr_input.c

index 0e747b5f77032ae39e084176f52ad3489e529fd9..ba77ecc8cadf15bb62ce949f6a9aa960501b037e 100644 (file)
@@ -236,6 +236,16 @@ typedef struct _E_Rect         E_Rect;
     } \
   while (0)
 
+# define E_LIST_HANDLER_PREPEND(list, type, callback, data) \
+  do \
+    { \
+       Ecore_Event_Handler *_eh; \
+       _eh = ecore_event_handler_prepend(type, (Ecore_Event_Handler_Cb)callback, data); \
+       assert(_eh); \
+       list = eina_list_append(list, _eh); \
+    } \
+  while (0)
+
 #define E_LIST_HOOK_APPEND(list, type, callback, data) \
   do \
     { \
index d1f68477c895c8506d34d90eca838e145c6278a3..992f111757bcf7e1b07e0c226de5ca670b7e1ae4 100644 (file)
@@ -43,7 +43,6 @@ struct _E_Devicemgr
    E_Devicemgr_Config_Data *dconfig;
    E_Devicemgr_Wl_Data *wl_data;
 
-   Ecore_Event_Filter *ev_filter;
    Eina_List *handlers;
 
    Eina_List *device_list;
index b46f0b3cad9abc471f38bb8fa2af3edbc034b6a1..ddf133bf10193ed740b0de131db0681dd55d1824 100644 (file)
@@ -326,9 +326,11 @@ _e_devicemgr_input_cb_mouse_button_down(void *data, int type, void *event)
    Eina_Bool res = ECORE_CALLBACK_PASS_ON;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(event, res);
-
    ev = (Ecore_Event_Mouse_Button *)event;
 
+   res = e_devicemgr_block_check_button(ev, EINA_TRUE);
+   if (res == ECORE_CALLBACK_DONE) return res;
+
    if (e_devicemgr->dconfig->conf->input.button_remap_enable)
      res = _e_devicemgr_input_mouse_button_remap(ev, EINA_TRUE);
 
@@ -342,22 +344,66 @@ _e_devicemgr_input_cb_mouse_button_up(void *data, int type, void *event)
    Eina_Bool res = ECORE_CALLBACK_PASS_ON;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(event, res);
-
    ev = (Ecore_Event_Mouse_Button *)event;
 
+   res = e_devicemgr_block_check_button(ev, EINA_FALSE);
+   if (res == ECORE_CALLBACK_DONE) return res;
+
    if (e_devicemgr->dconfig->conf->input.button_remap_enable)
      res = _e_devicemgr_input_mouse_button_remap(ev, EINA_FALSE);
 
    return res;
 }
 
+static Eina_Bool
+_e_devicemgr_input_cb_mouse_move(void *data, int type, void *event)
+{
+   Ecore_Event_Mouse_Move *ev;
+   Eina_Bool res = ECORE_CALLBACK_PASS_ON;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(event, res);
+   ev = (Ecore_Event_Mouse_Move *)event;
+
+   res = e_devicemgr_block_check_move(ev);
+
+   return res;
+}
+
+static Eina_Bool
+_e_devicemgr_input_cb_mouse_wheel(void *data, int type, void *event)
+{
+   Ecore_Event_Mouse_Wheel *ev;
+   int detent;
+   Eina_Bool res = ECORE_CALLBACK_PASS_ON;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(event, res);
+   ev = (Ecore_Event_Mouse_Wheel *)event;
+
+   if (!ev->dev) return ECORE_CALLBACK_PASS_ON;
+
+   if (!e_devicemgr_detent_is_detent(ecore_device_name_get(ev->dev)))
+     return ECORE_CALLBACK_PASS_ON;
+
+   detent = (int)(ev->z / (e_devicemgr->detent.wheel_click_angle
+                           ? e_devicemgr->detent.wheel_click_angle
+                           : 1));
+
+   if (detent == 2 || detent == -2)
+     {
+        detent = (detent / 2)*(-1);
+        e_devicemgr_wl_detent_send_event(detent);
+     }
+
+   return ECORE_CALLBACK_DONE;
+}
+
+
 static Eina_Bool
 _e_devicemgr_input_cb_device_add(void *data, int type, void *event)
 {
    Ecore_Event_Device_Info *ev;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(event, ECORE_CALLBACK_PASS_ON);
-
    ev = (Ecore_Event_Device_Info *)event;
 
    _e_devicemgr_input_device_add(ev->name, ev->identifier, ev->seatname, ev->clas, ev->subclas);
@@ -371,7 +417,6 @@ _e_devicemgr_input_cb_device_del(void *data, int type, void *event)
    Ecore_Event_Device_Info *ev;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(event, ECORE_CALLBACK_PASS_ON);
-
    ev = (Ecore_Event_Device_Info *)event;
 
    _e_devicemgr_input_device_del(ev->name, ev->identifier, ev->seatname, ev->clas, ev->subclas);
@@ -395,62 +440,13 @@ _e_devicemgr_input_cb_device_update(void *data, int type, void *event)
 }
 
 static Eina_Bool
-_e_devicemgr_input_process_mouse_button_down(Ecore_Event_Mouse_Button *ev)
-{
-   Eina_Bool res = ECORE_CALLBACK_PASS_ON;
-
-   res = e_devicemgr_block_check_button(ev, EINA_TRUE);
-
-   return res;
-}
-
-static Eina_Bool
-_e_devicemgr_input_process_mouse_button_up(Ecore_Event_Mouse_Button *ev)
-{
-   Eina_Bool res = ECORE_CALLBACK_PASS_ON;
-
-   res = e_devicemgr_block_check_button(ev, EINA_FALSE);
-
-   return res;
-}
-
-static Eina_Bool
-_e_devicemgr_input_process_mouse_move(Ecore_Event_Mouse_Move *ev)
+_e_devicemgr_input_cb_key_down(void *data, int type, void *event)
 {
+   Ecore_Event_Key *ev;
    Eina_Bool res = ECORE_CALLBACK_PASS_ON;
 
-   res = e_devicemgr_block_check_move(ev);
-
-   return res;
-}
-
-static Eina_Bool
-_e_devicemgr_input_process_mouse_wheel(Ecore_Event_Mouse_Wheel *ev)
-{
-   int detent;
-
-   if (!ev->dev) return ECORE_CALLBACK_PASS_ON;
-
-   if (!e_devicemgr_detent_is_detent(ecore_device_name_get(ev->dev)))
-     return ECORE_CALLBACK_PASS_ON;
-
-   detent = (int)(ev->z / (e_devicemgr->detent.wheel_click_angle
-                           ? e_devicemgr->detent.wheel_click_angle
-                           : 1));
-
-   if (detent == 2 || detent == -2)
-     {
-        detent = (detent / 2)*(-1);
-        e_devicemgr_wl_detent_send_event(detent);
-     }
-
-   return ECORE_CALLBACK_DONE;
-}
-
-static Eina_Bool
-_e_devicemgr_input_process_key_down(Ecore_Event_Key *ev)
-{
-   Eina_Bool res = ECORE_CALLBACK_PASS_ON;
+   EINA_SAFETY_ON_NULL_RETURN_VAL(event, ECORE_CALLBACK_PASS_ON);
+   ev = (Ecore_Event_Key *)event;
 
    res = e_devicemgr_block_check_keyboard(ev, EINA_TRUE);
 
@@ -458,64 +454,15 @@ _e_devicemgr_input_process_key_down(Ecore_Event_Key *ev)
 }
 
 static Eina_Bool
-_e_devicemgr_input_process_key_up(Ecore_Event_Key *ev)
-{
-   Eina_Bool res = ECORE_CALLBACK_PASS_ON;
-
-   res = e_devicemgr_block_check_keyboard(ev, EINA_FALSE);
-
-   return res;
-}
-
-static Eina_Bool
-_e_devicemgr_input_event_filter(void *data EINA_UNUSED, void *loop_data EINA_UNUSED, int type, void *event)
+_e_devicemgr_input_cb_key_up(void *data, int type, void *event)
 {
+   Ecore_Event_Key *ev;
    Eina_Bool res = ECORE_CALLBACK_PASS_ON;
 
-   if (!event) return res;
-
-   if (ECORE_EVENT_KEY_DOWN == type)
-     {
-        Ecore_Event_Key *ev;
-        ev = (Ecore_Event_Key *)event;
-
-        res = _e_devicemgr_input_process_key_down(ev);
-     }
-   else if (ECORE_EVENT_KEY_UP == type)
-     {
-        Ecore_Event_Key *ev;
-        ev = (Ecore_Event_Key *)event;
-
-        res = _e_devicemgr_input_process_key_up(ev);
-     }
-   else if (ECORE_EVENT_MOUSE_BUTTON_DOWN == type)
-     {
-        Ecore_Event_Mouse_Button *ev;
-        ev = (Ecore_Event_Mouse_Button *)event;
-
-        res = _e_devicemgr_input_process_mouse_button_down(ev);
-     }
-   else if (ECORE_EVENT_MOUSE_BUTTON_UP == type)
-     {
-        Ecore_Event_Mouse_Button *ev;
-        ev = (Ecore_Event_Mouse_Button *)event;
-
-        res = _e_devicemgr_input_process_mouse_button_up(ev);
-     }
-   else if (ECORE_EVENT_MOUSE_MOVE == type)
-     {
-        Ecore_Event_Mouse_Move *ev;
-        ev = (Ecore_Event_Mouse_Move *)event;
-
-        res = _e_devicemgr_input_process_mouse_move(ev);
-     }
-   else if (ECORE_EVENT_MOUSE_WHEEL == type)
-     {
-        Ecore_Event_Mouse_Wheel *ev;
-        ev = (Ecore_Event_Mouse_Wheel *)event;
+   EINA_SAFETY_ON_NULL_RETURN_VAL(event, ECORE_CALLBACK_PASS_ON);
+   ev = (Ecore_Event_Key *)event;
 
-        res = _e_devicemgr_input_process_mouse_wheel(ev);
-     }
+   res = e_devicemgr_block_check_keyboard(ev, EINA_FALSE);
 
    return res;
 }
@@ -523,12 +470,15 @@ _e_devicemgr_input_event_filter(void *data EINA_UNUSED, void *loop_data EINA_UNU
 Eina_Bool
 e_devicemgr_input_init(void)
 {
-   e_devicemgr->ev_filter = ecore_event_filter_add(NULL, _e_devicemgr_input_event_filter, NULL, NULL);
-   E_LIST_HANDLER_APPEND(e_devicemgr->handlers, ECORE_EVENT_MOUSE_BUTTON_DOWN, _e_devicemgr_input_cb_mouse_button_down, NULL);
-   E_LIST_HANDLER_APPEND(e_devicemgr->handlers, ECORE_EVENT_MOUSE_BUTTON_UP, _e_devicemgr_input_cb_mouse_button_up, NULL);
-   E_LIST_HANDLER_APPEND(e_devicemgr->handlers, ECORE_EVENT_DEVICE_ADD, _e_devicemgr_input_cb_device_add, NULL);
-   E_LIST_HANDLER_APPEND(e_devicemgr->handlers, ECORE_EVENT_DEVICE_DEL, _e_devicemgr_input_cb_device_del, NULL);
-   E_LIST_HANDLER_APPEND(e_devicemgr->handlers, ECORE_EVENT_DEVICE_SUBCLASS_UPDATE, _e_devicemgr_input_cb_device_update, NULL);
+   E_LIST_HANDLER_PREPEND(e_devicemgr->handlers, ECORE_EVENT_MOUSE_BUTTON_DOWN, _e_devicemgr_input_cb_mouse_button_down, NULL);
+   E_LIST_HANDLER_PREPEND(e_devicemgr->handlers, ECORE_EVENT_MOUSE_BUTTON_UP, _e_devicemgr_input_cb_mouse_button_up, NULL);
+   E_LIST_HANDLER_PREPEND(e_devicemgr->handlers, ECORE_EVENT_MOUSE_MOVE, _e_devicemgr_input_cb_mouse_move, NULL);
+   E_LIST_HANDLER_PREPEND(e_devicemgr->handlers, ECORE_EVENT_MOUSE_WHEEL, _e_devicemgr_input_cb_mouse_wheel, NULL);
+   E_LIST_HANDLER_PREPEND(e_devicemgr->handlers, ECORE_EVENT_KEY_DOWN, _e_devicemgr_input_cb_key_down, NULL);
+   E_LIST_HANDLER_PREPEND(e_devicemgr->handlers, ECORE_EVENT_KEY_UP, _e_devicemgr_input_cb_key_up, NULL);
+   E_LIST_HANDLER_PREPEND(e_devicemgr->handlers, ECORE_EVENT_DEVICE_ADD, _e_devicemgr_input_cb_device_add, NULL);
+   E_LIST_HANDLER_PREPEND(e_devicemgr->handlers, ECORE_EVENT_DEVICE_DEL, _e_devicemgr_input_cb_device_del, NULL);
+   E_LIST_HANDLER_PREPEND(e_devicemgr->handlers, ECORE_EVENT_DEVICE_SUBCLASS_UPDATE, _e_devicemgr_input_cb_device_update, NULL);
 
    return EINA_TRUE;
 }
@@ -540,6 +490,4 @@ e_devicemgr_input_shutdown(void)
 
    EINA_LIST_FREE(e_devicemgr->handlers, h)
      ecore_event_handler_del(h);
-
-   ecore_event_filter_del(e_devicemgr->ev_filter);
 }