e_keyrouter: Replace TIZEN_KEYROUTER_MODE with array and enum 08/318208/1
authorTaeHyeon Jeong <thyeon.jeong@samsung.com>
Fri, 10 Jan 2025 10:51:16 +0000 (19:51 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Tue, 14 Jan 2025 07:14:43 +0000 (16:14 +0900)
- Refactored the code to replace TIZEN_KEYROUTER_MODE constants with an array and enum, improving readability and maintainability.
- Used a for loop to iterate through the array, reducing code duplication and improving code structure.
- Ensured that the refactored code maintains the same functionality as the original implementation.

Change-Id: Id4b29fa56ee62b4996251803da4ec43fd7a900f9

src/bin/inputmgr/e_keyrouter_intern.h
src/bin/inputmgr/e_keyrouter_list.c

index 0a1ff06c168bf62e482548d9ea49c15b172fa1b2..33ec976c86fd48c48b4763d8d28fa64f775fafac 100644 (file)
@@ -34,6 +34,16 @@ typedef struct _E_Keyrouter_Tizen_HWKey E_Keyrouter_Tizen_HWKey;
 
 typedef struct _E_Keyrouter_Registered_Window_Info E_Keyrouter_Registered_Window_Info;
 
+typedef enum {
+  NONE,
+  EXCLUSIVE,
+  OVERRIDABLE_EXCLUSIVE,
+  TOPMOST,
+  SHARED,
+  PRESSED,
+  PICTURE_OFF,
+} E_KEYROUTER_MODE;
+
 struct _E_Keyrouter_Conf_Edd
 {
    int num_keycode;                   // The numbers of keyrouted keycodes defined by xkb-tizen-data
index cafe673e90ab75f79a33d7f7ce10cded835198d7..fd7ea461f28314fdec7521e40f84fecc603a03d8 100644 (file)
@@ -6,6 +6,14 @@
 
 #include <tizen-extension-server-protocol.h>
 
+static uint32_t _modes[] = {TIZEN_KEYROUTER_MODE_NONE,
+                            TIZEN_KEYROUTER_MODE_EXCLUSIVE,
+                            TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE,
+                            TIZEN_KEYROUTER_MODE_TOPMOST,
+                            TIZEN_KEYROUTER_MODE_SHARED,
+                            TIZEN_KEYROUTER_MODE_PRESSED,
+                            TIZEN_KEYROUTER_MODE_PICTURE_OFF};
+
 static int _e_keyrouter_find_duplicated_grabbed_key(struct wl_resource *surface, struct wl_client *wc, uint32_t key, uint32_t mode);
 
 /* Function for checking whether the key has been grabbed already by the same wl_surface or not */
@@ -89,7 +97,7 @@ e_keyrouter_prepend_to_keylist(struct wl_resource *surface, struct wl_client *wc
 EINTERN void
 e_keyrouter_remove_surface_from_list(struct wl_resource *surface)
 {
-   uint32_t key;
+   uint32_t key, mode;
 
    EINA_SAFETY_ON_NULL_RETURN(surface);
 
@@ -102,18 +110,8 @@ e_keyrouter_remove_surface_from_list(struct wl_resource *surface)
         if (!e_keyrouter_hardkeys_keycode_available(krt->HardKeys, key))
           continue;
 
-        // EXCLUSIVE
-        e_keyrouter_hardkeys_remove_keynode_with_surface(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_EXCLUSIVE, surface);
-        // OVERRIDEABLE_EXCLUSIVE
-        e_keyrouter_hardkeys_remove_keynode_with_surface(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE, surface);
-        // TOPMOST
-        e_keyrouter_hardkeys_remove_keynode_with_surface(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_TOPMOST, surface);
-        // SHARED
-        e_keyrouter_hardkeys_remove_keynode_with_surface(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_SHARED, surface);
-        // PRESSED
-        e_keyrouter_hardkeys_remove_keynode_with_surface(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_PRESSED, surface);
-        // PICTURE_OFF
-        e_keyrouter_hardkeys_remove_keynode_with_surface(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_PICTURE_OFF, surface);
+        for (mode = EXCLUSIVE; mode <= PICTURE_OFF; ++mode)
+          e_keyrouter_hardkeys_remove_keynode_with_surface(krt->HardKeys, key, _modes[mode], surface);
      }
 
    g_rec_mutex_unlock(&krt->grab_key_mutex);
@@ -122,7 +120,7 @@ e_keyrouter_remove_surface_from_list(struct wl_resource *surface)
 EINTERN void
 e_keyrouter_remove_client_from_list(struct wl_client *client)
 {
-   uint32_t key;
+   uint32_t key, mode;
 
    EINA_SAFETY_ON_NULL_RETURN(client);
 
@@ -135,18 +133,8 @@ e_keyrouter_remove_client_from_list(struct wl_client *client)
         if (!e_keyrouter_hardkeys_keycode_available(krt->HardKeys, key))
           continue;
 
-        // EXCLUSIVE
-        e_keyrouter_hardkeys_remove_keynode_with_client(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_EXCLUSIVE, client);
-        // OVERRIDEABLE_EXCLUSIVE
-        e_keyrouter_hardkeys_remove_keynode_with_client(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE, client);
-        // TOPMOST
-        e_keyrouter_hardkeys_remove_keynode_with_client(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_TOPMOST, client);
-        // SHARED
-        e_keyrouter_hardkeys_remove_keynode_with_client(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_SHARED, client);
-        // PRESSED
-        e_keyrouter_hardkeys_remove_keynode_with_client(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_PRESSED, client);
-        // PICTURE_OFF
-        e_keyrouter_hardkeys_remove_keynode_with_client(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_PICTURE_OFF, client);
+        for (mode = EXCLUSIVE; mode <= PICTURE_OFF; ++mode)
+          e_keyrouter_hardkeys_remove_keynode_with_client(krt->HardKeys, key, _modes[mode], client);
      }
 
    g_rec_mutex_unlock(&krt->grab_key_mutex);
@@ -155,55 +143,51 @@ e_keyrouter_remove_client_from_list(struct wl_client *client)
 EINTERN uint32_t
 e_keyrouter_find_keygrab_mode_with_surface(struct wl_resource *surface, uint32_t key)
 {
-   uint32_t mode = TIZEN_KEYROUTER_MODE_NONE;
+   uint32_t mode;
 
    g_rec_mutex_lock(&krt->grab_key_mutex);
 
-   if (e_keyrouter_hardkeys_is_key_grabbed_by_surface(krt->HardKeys, key, surface, TIZEN_KEYROUTER_MODE_EXCLUSIVE))
-     mode = TIZEN_KEYROUTER_MODE_EXCLUSIVE;
-   else if (e_keyrouter_hardkeys_is_key_grabbed_by_surface(krt->HardKeys, key, surface, TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE))
-     mode = TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE;
-   else if (e_keyrouter_hardkeys_is_key_grabbed_by_surface(krt->HardKeys, key, surface, TIZEN_KEYROUTER_MODE_TOPMOST))
-     mode = TIZEN_KEYROUTER_MODE_TOPMOST;
-   else if (e_keyrouter_hardkeys_is_key_grabbed_by_surface(krt->HardKeys, key, surface, TIZEN_KEYROUTER_MODE_SHARED))
-     mode = TIZEN_KEYROUTER_MODE_SHARED;
+   for (mode = EXCLUSIVE; mode <= SHARED; ++mode)
+     if (e_keyrouter_hardkeys_is_key_grabbed_by_surface(krt->HardKeys, key, surface, _modes[mode]))
+       break;
 
    g_rec_mutex_unlock(&krt->grab_key_mutex);
 
-   if (mode != TIZEN_KEYROUTER_MODE_NONE)
+   if (mode > SHARED)
+     mode = NONE;
+
+   if (mode != NONE)
      KLDBG("Find %d key grabbed by (wl_surface: %p) in %s mode",
-           key, surface, e_keyrouter_util_mode_to_string(mode));
+           key, surface, e_keyrouter_util_mode_to_string(_modes[mode]));
    else
      KLDBG("%d key is not grabbed by (wl_surface: %p)", key, surface);
 
-   return mode;
+   return _modes[mode];
 }
 
 EINTERN uint32_t
 e_keyrouter_find_keygrab_mode_with_client(struct wl_client *client, uint32_t key)
 {
-   uint32_t mode = TIZEN_KEYROUTER_MODE_NONE;
+   uint32_t mode;
 
    g_rec_mutex_lock(&krt->grab_key_mutex);
 
-   if (e_keyrouter_hardkeys_is_key_grabbed_by_client(krt->HardKeys, key, client, TIZEN_KEYROUTER_MODE_EXCLUSIVE))
-      mode = TIZEN_KEYROUTER_MODE_EXCLUSIVE;
-   else if (e_keyrouter_hardkeys_is_key_grabbed_by_client(krt->HardKeys, key, client, TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE))
-      mode = TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE;
-   else if (e_keyrouter_hardkeys_is_key_grabbed_by_client(krt->HardKeys, key, client, TIZEN_KEYROUTER_MODE_TOPMOST))
-      mode = TIZEN_KEYROUTER_MODE_TOPMOST;
-   else if (e_keyrouter_hardkeys_is_key_grabbed_by_client(krt->HardKeys, key, client, TIZEN_KEYROUTER_MODE_SHARED))
-      mode = TIZEN_KEYROUTER_MODE_SHARED;
+   for (mode = EXCLUSIVE; mode <= SHARED; ++mode)
+     if (e_keyrouter_hardkeys_is_key_grabbed_by_client(krt->HardKeys, key, client, _modes[mode]))
+       break;
 
    g_rec_mutex_unlock(&krt->grab_key_mutex);
 
-   if (mode != TIZEN_KEYROUTER_MODE_NONE)
+   if (mode > SHARED)
+     mode = NONE;
+
+   if (mode != NONE)
      KLDBG("Find %d key grabbed by (wl_client: %p) in %s mode",
-           key, client, e_keyrouter_util_mode_to_string(mode));
+           key, client, e_keyrouter_util_mode_to_string(_modes[mode]));
    else
      KLDBG("%d key is not grabbed by (wl_client: %p)", key, client);
 
-   return mode;
+   return _modes[mode];
 }
 
 EINTERN int
@@ -307,34 +291,16 @@ e_keyrouter_keygrab_unset(struct wl_client *client, struct wl_resource *surface,
 
    g_rec_mutex_lock(&krt->grab_key_mutex);
 
-   if (!surface)
+   for (uint32_t mode = EXCLUSIVE; mode <= PRESSED; ++mode)
      {
-        /* EXCLUSIVE grab */
-        e_keyrouter_hardkeys_remove_keynode_with_client(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_EXCLUSIVE, client);
-
-        /* OVERRIDABLE_EXCLUSIVE grab */
-        e_keyrouter_hardkeys_remove_keynode_with_client(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE, client);
-
-        /* SHARED grab */
-        e_keyrouter_hardkeys_remove_keynode_with_client(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_SHARED, client);
+        if (mode == TOPMOST) continue;
 
-        /* Press List */
-        e_keyrouter_hardkeys_remove_keynode_with_client(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_PRESSED, client);
+        if (!surface)
+          e_keyrouter_hardkeys_remove_keynode_with_client(krt->HardKeys, key, _modes[mode], client);
+        else
+          e_keyrouter_hardkeys_remove_keynode_with_surface(krt->HardKeys, key, _modes[mode], surface);
      }
-   else
-     {
-        /* EXCLUSIVE grab */
-        e_keyrouter_hardkeys_remove_keynode_with_surface(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_EXCLUSIVE, surface);
-
-        /* OVERRIDABLE_EXCLUSIVE grab */
-        e_keyrouter_hardkeys_remove_keynode_with_surface(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE, surface);
 
-        /* SHARED grab */
-        e_keyrouter_hardkeys_remove_keynode_with_surface(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_SHARED, surface);
-
-        /* Press List */
-        e_keyrouter_hardkeys_remove_keynode_with_surface(krt->HardKeys, key, TIZEN_KEYROUTER_MODE_PRESSED, surface);
-     }
    g_rec_mutex_unlock(&krt->grab_key_mutex);
 
 finish: