e_input_backend: Fix libinput_unref crash issue 63/317463/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Thu, 2 Jan 2025 06:45:16 +0000 (15:45 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Thu, 2 Jan 2025 09:09:04 +0000 (18:09 +0900)
Change-Id: Iedb85536afc89891c112904f53bfb5ea0614a0e6
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/bin/inputmgr/e_input_backend.c

index 43d780118d8613cf490d05cce86622bf17979d87..4ef3697ec271afadacfa8d9cc3b4694681f7114b 100644 (file)
@@ -1259,7 +1259,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;
@@ -1283,17 +1282,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);
@@ -2038,6 +2026,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);