e_input_event: fix issue number key event was inserted twice 16/325316/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Thu, 5 Jun 2025 12:15:41 +0000 (21:15 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Mon, 9 Jun 2025 01:29:42 +0000 (10:29 +0900)
Change-Id: Idbb889ce3ad7032730038c15b82da5e8c8bcbfbe
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/bin/inputmgr/e_input_event.c

index 7ad1d912955c2720e1afdf0b630f7cb7b455e999..c54eb1b51e68ab631d21dcd931f27e1884c0d49f 100644 (file)
@@ -131,7 +131,7 @@ _e_input_thread_event_handler_add(void *data)
 }
 
 static E_Input_Event_Handler *
-_e_input_event_handler_create(int event, ev_handler_func func, void *user_data, E_Input_Thread_Safe_Call_Cb input_thread_cb)
+_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 *eh = (E_Input_Event_Handler *)calloc(1, sizeof(E_Input_Event_Handler));
    if (!eh) return NULL;
@@ -149,8 +149,15 @@ _e_input_event_handler_create(int event, ev_handler_func func, void *user_data,
 
         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));
+
+        return eh;
      }
 
+   if (append)
+     source->ev_handler_list = g_list_append(source->ev_handler_list, eh);
+   else
+     source->ev_handler_list = g_list_prepend(source->ev_handler_list, eh);
+
    return eh;
 }
 
@@ -159,12 +166,7 @@ e_input_event_handler_add(E_Input_Event_Source *source, int event, ev_handler_fu
 {
    if (!source) return NULL;
 
-   E_Input_Event_Handler *eh = _e_input_event_handler_create(event, func, user_data, _e_input_thread_event_handler_add);
-   if (!eh) return NULL;
-
-   source->ev_handler_list = g_list_append(source->ev_handler_list, eh);
-
-   return eh;
+   return _e_input_event_handler_create(source, event, func, user_data, _e_input_thread_event_handler_add, EINA_TRUE);
 }
 
 static void
@@ -185,12 +187,7 @@ e_input_event_handler_prepend(E_Input_Event_Source *source, int event, ev_handle
 {
    if (!source) return NULL;
 
-   E_Input_Event_Handler *eh = _e_input_event_handler_create(event, func, user_data, _e_input_thread_event_handler_prepend);
-   if (!eh) return NULL;
-
-   source->ev_handler_list = g_list_prepend(source->ev_handler_list, eh);
-
-   return eh;
+   return _e_input_event_handler_create(source, event, func, user_data, _e_input_thread_event_handler_prepend, EINA_FALSE);
 }
 
 static void