e_input: fix issue not to handle key event in emulator 31/297431/1 accepted/tizen/unified/20230821.103306
authorJihoon Kim <jihoon48.kim@samsung.com>
Fri, 18 Aug 2023 05:03:23 +0000 (14:03 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Fri, 18 Aug 2023 06:09:13 +0000 (15:09 +0900)
Change-Id: I7302a798d57a032a6c64e812591b74da76a018ce
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/bin/e_input_evdev.c

index 8a08e02..360bb4b 100644 (file)
@@ -543,56 +543,65 @@ _device_handle_key(struct libinput_device *device, struct libinput_event_keyboar
         return;
      }
 
-   if (edev->ecore_dev) ecore_dev = edev->ecore_dev;
-   else if (edev->ecore_dev_list && eina_list_count(edev->ecore_dev_list) > 0)
+   if (!e_input_thread_mode_get())
      {
-        EINA_LIST_FOREACH(edev->ecore_dev_list, l, data)
+        if (edev->ecore_dev) ecore_dev = edev->ecore_dev;
+        else if (edev->ecore_dev_list && eina_list_count(edev->ecore_dev_list) > 0)
           {
-             if (ecore_device_class_get(data) == ECORE_DEVICE_CLASS_KEYBOARD)
+             EINA_LIST_FOREACH(edev->ecore_dev_list, l, data)
                {
-                  ecore_dev = data;
-                  break;
+                  if (ecore_device_class_get(data) == ECORE_DEVICE_CLASS_KEYBOARD)
+                    {
+                       ecore_dev = data;
+                       break;
+                    }
                }
           }
-     }
-   else
-     {
-        edev->ecore_dev = e_input_evdev_get_ecore_device(edev->path, ECORE_DEVICE_CLASS_KEYBOARD);
-        ecore_dev = edev->ecore_dev;
-     }
+        else
+          {
+             edev->ecore_dev = e_input_evdev_get_ecore_device(edev->path, ECORE_DEVICE_CLASS_KEYBOARD);
+             ecore_dev = edev->ecore_dev;
+          }
 
-   if (!ecore_dev)
-     {
-        ERR("Failed to get source ecore device from event !\n");
-        return;
-     }
+        if (!ecore_dev)
+          {
+             ERR("Failed to get source ecore device from event !\n");
+             return;
+          }
 
-   if (edev->e_dev) e_dev = edev->e_dev;
-   else if (edev->e_dev_list && g_list_length(edev->e_dev_list) > 0)
+        device_name = ecore_device_name_get(ecore_dev);
+     }
+   else
      {
-        glist = edev->e_dev_list;
-        while (glist)
+        if (edev->e_dev) e_dev = edev->e_dev;
+        else if (edev->e_dev_list && g_list_length(edev->e_dev_list) > 0)
           {
-             e_dev_data = glist->data;
-             if (e_device_class_get(e_dev_data) == ECORE_DEVICE_CLASS_KEYBOARD)
+             glist = edev->e_dev_list;
+             while (glist)
                {
-                  e_dev = e_dev_data;
-                  break;
+                  e_dev_data = glist->data;
+                  if (e_device_class_get(e_dev_data) == ECORE_DEVICE_CLASS_KEYBOARD)
+                    {
+                       e_dev = e_dev_data;
+                       break;
+                    }
+
+                  glist = g_list_next(glist);
                }
+          }
+        else
+          {
+             edev->e_dev = e_input_evdev_get_e_device(edev->path, ECORE_DEVICE_CLASS_KEYBOARD);
+             e_dev = edev->e_dev;
+          }
 
-             glist = g_list_next(glist);
+        if (!e_dev)
+          {
+             ERR("Failed to get source e device from event !\n");
+             return;
           }
-     }
-   else
-     {
-        edev->e_dev = e_input_evdev_get_e_device(edev->path, ECORE_DEVICE_CLASS_KEYBOARD);
-        e_dev = edev->e_dev;
-     }
 
-   if (!e_dev)
-     {
-        ERR("Failed to get source e device from event !\n");
-        return;
+        device_name = e_device_name_get(e_dev);
      }
 
    timestamp = libinput_event_keyboard_get_time(event);
@@ -607,7 +616,7 @@ _device_handle_key(struct libinput_device *device, struct libinput_event_keyboar
             (edev->seat->dev->server_blocked & E_INPUT_SEAT_KEYBOARD))
           {
              ELOGF("Key", "Press (keycode: %d, device: %s) is blocked by %p, server: 0x%x", NULL,
-                   code, ecore_device_name_get(ecore_dev), edev->seat->dev->blocked_client,
+                   code, device_name, edev->seat->dev->blocked_client,
                    edev->seat->dev->server_blocked);
              return;
           }
@@ -650,7 +659,7 @@ _device_handle_key(struct libinput_device *device, struct libinput_event_keyboar
         if (!dup_found)
           {
              ELOGF("Key", "Release (keycode: %d, device: %s) is blocked by %p", NULL,
-                   code, ecore_device_name_get(ecore_dev), edev->seat->dev->blocked_client);
+                   code, device_name, edev->seat->dev->blocked_client);
              return;
           }
      }
@@ -758,22 +767,20 @@ _device_handle_key(struct libinput_device *device, struct libinput_event_keyboar
 
    comp_conf = e_comp_config_get();
 
+   if (comp_conf && comp_conf->input_log_enable)
+     ELOGF("Key", "%s (keyname: %s, keycode: %d, timestamp: %u, device: %s)", NULL, state?"Press":"Release", e->keyname, e->keycode, e->timestamp, device_name);
+
    if (e_input_thread_mode_get())
      {
         e->dev = (Eo *)g_object_ref(e_dev);
-        device_name = e_device_name_get(e_dev);
         e_input_event_add(input->event_source, state ? ECORE_EVENT_KEY_DOWN : ECORE_EVENT_KEY_UP, e, _e_input_event_key_cb_free, NULL);
      }
    else
      {
         e->dev = ecore_device_ref(ecore_dev);
-        device_name = ecore_device_name_get(ecore_dev);
         ecore_event_add(state ? ECORE_EVENT_KEY_DOWN : ECORE_EVENT_KEY_UP, e, _e_input_event_key_cb_free, NULL);
      }
 
-   if (comp_conf && comp_conf->input_log_enable)
-     ELOGF("Key", "%s (keyname: %s, keycode: %d, timestamp: %u, device: %s)", NULL, state?"Press":"Release", e->keyname, e->keycode, e->timestamp, device_name);
-
    if (tmp) free(tmp);
 }