e_input_event: reduce duplicated code to add input event 17/325317/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Fri, 6 Jun 2025 11:14:37 +0000 (20:14 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Mon, 9 Jun 2025 01:29:42 +0000 (10:29 +0900)
Change-Id: I88d9a7d9c5cc6d5813df3b447d1568637cf9a587
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/bin/inputmgr/e_input_event.c
src/bin/inputmgr/e_input_event_intern.h

index c54eb1b51e68ab631d21dcd931f27e1884c0d49f..ffef53a3b57b6a50fd59e7249b42f8856cb87857 100644 (file)
@@ -127,13 +127,21 @@ _e_input_thread_event_handler_add(void *data)
    EINA_SAFETY_ON_NULL_RETURN(source);
 
    INF("[input thread|%s] eh(%p)\n", __func__, ie_data->eh);
-   source->ev_handler_list = g_list_append(source->ev_handler_list, ie_data->eh);
+
+   if (ie_data->append)
+     source->ev_handler_list = g_list_append(source->ev_handler_list, ie_data->eh);
+   else
+     source->ev_handler_list = g_list_prepend(source->ev_handler_list, ie_data->eh);
 }
 
 static E_Input_Event_Handler *
-_e_input_event_handler_create(E_Input_Event_Source *source, int event, ev_handler_func func, void *user_data, E_Input_Thread_Safe_Call_Cb input_thread_cb, Eina_Bool append)
+_e_input_event_handler_create(E_Input_Event_Source *source, int event, ev_handler_func func, void *user_data, Eina_Bool append)
 {
-   E_Input_Event_Handler *eh = (E_Input_Event_Handler *)calloc(1, sizeof(E_Input_Event_Handler));
+   E_Input_Event_Handler *eh = NULL;
+   if (!source) return NULL;
+
+   eh = (E_Input_Event_Handler *)calloc(1, sizeof(E_Input_Event_Handler));
+
    if (!eh) return NULL;
 
    eh->event = event;
@@ -146,9 +154,10 @@ _e_input_event_handler_create(E_Input_Event_Source *source, int event, ev_handle
         memset(&ie_data, 0, sizeof(E_Input_Thread_Request_Input_Event_Data));
 
         ie_data.eh = eh;
+        ie_data.append = append;
 
         INF("[%s] eh(%p)\n", __func__, eh);
-        e_input_backend_thread_safe_call(input_thread_cb, &ie_data, sizeof(E_Input_Thread_Request_Input_Event_Data));
+        e_input_backend_thread_safe_call(_e_input_thread_event_handler_add, &ie_data, sizeof(E_Input_Thread_Request_Input_Event_Data));
 
         return eh;
      }
@@ -164,30 +173,13 @@ _e_input_event_handler_create(E_Input_Event_Source *source, int event, ev_handle
 E_API E_Input_Event_Handler *
 e_input_event_handler_add(E_Input_Event_Source *source, int event, ev_handler_func func, void *user_data)
 {
-   if (!source) return NULL;
-
-   return _e_input_event_handler_create(source, event, func, user_data, _e_input_thread_event_handler_add, EINA_TRUE);
-}
-
-static void
-_e_input_thread_event_handler_prepend(void *data)
-{
-   E_Input_Thread_Request_Input_Event_Data *ie_data = data;
-   E_Input_Event_Source *source = e_input_event_source_get();
-
-   EINA_SAFETY_ON_NULL_RETURN(ie_data);
-   EINA_SAFETY_ON_NULL_RETURN(source);
-
-   INF("[input thread|%s] eh(%p)\n", __func__, ie_data->eh);
-   source->ev_handler_list = g_list_prepend(source->ev_handler_list, ie_data->eh);
+   return _e_input_event_handler_create(source, event, func, user_data, EINA_TRUE);
 }
 
 E_API E_Input_Event_Handler *
 e_input_event_handler_prepend(E_Input_Event_Source *source, int event, ev_handler_func func, void *user_data)
 {
-   if (!source) return NULL;
-
-   return _e_input_event_handler_create(source, event, func, user_data, _e_input_thread_event_handler_prepend, EINA_FALSE);
+   return _e_input_event_handler_create(source, event, func, user_data, EINA_FALSE);
 }
 
 static void
index 9b06c66dc8543dbcf4aa0bc964edb734a36c8cb1..1ac25ee452d786834ec3dd7d1033c934776fb85e 100644 (file)
@@ -9,6 +9,7 @@ typedef struct
   void *eh;
   void *ef;
   void *ev;
+  Eina_Bool append;
 } E_Input_Thread_Request_Input_Event_Data;
 
 EINTERN E_Input_Event_Source *e_input_event_source_create();