e_input_backend: Fix libinput_unref crash issue 48/317448/3
authorJihoon Kim <jihoon48.kim@samsung.com>
Thu, 2 Jan 2025 06:45:16 +0000 (15:45 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Thu, 2 Jan 2025 07:34:08 +0000 (07:34 +0000)
Change-Id: Iedb85536afc89891c112904f53bfb5ea0614a0e6
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/bin/inputmgr/e_input_backend.c

index 094a495f7f794509b241aeeef79c8a3d88000978..efcc128d74f988d63a121b49fa0b9183e15c1a3e 100644 (file)
@@ -1261,7 +1261,6 @@ _lower_priority()
 static void
 input_thread_start(void *data, Ecore_Thread *th)
 {
-   E_Input_Device *dev;
    E_Input_Backend *input;
    GMainContext *context = NULL;
    InputEventSource *input_event_source = NULL;
@@ -1285,17 +1284,6 @@ input_thread_start(void *data, Ecore_Thread *th)
    TSM("[WM] Skip sending start-up completion. (no systemd)");
 #endif
 
-   /* enable this input */
-   if (!e_input_backend_enable_input(input))
-     {
-        ERR("Failed to enable input");
-        return;
-     }
-
-   /* append this input */
-   dev = input->dev;
-   dev->inputs = eina_list_append(dev->inputs, input);
-
    //create a context
    context = g_main_context_new();
    g_main_context_push_thread_default(context);
@@ -2040,6 +2028,15 @@ e_input_backend_destroy(E_Input_Backend *input)
    if (input->hdlr)
      ecore_main_fd_handler_del(input->hdlr);
 
+   if (e_input_thread_mode_get())
+     {
+        if (input->input_thread_loop)
+          g_main_loop_quit(input->input_thread_loop);
+
+        if (input->input_thread)
+          ecore_thread_wait(input->input_thread, 1.0);
+     }
+
    if (input->libinput)
      libinput_unref(input->libinput);