e_comp: use atomic type for input key grab variable 06/302106/2
authorJihoon Kim <jihoon48.kim@samsung.com>
Thu, 30 Nov 2023 04:29:58 +0000 (13:29 +0900)
committerJunSeok Kim <juns.kim@samsung.com>
Fri, 1 Dec 2023 00:45:32 +0000 (00:45 +0000)
Change-Id: I8324902a42ce253bda50d7a299651314ca5a6751
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/bin/e_comp.c
src/bin/e_comp.h
src/bin/e_comp_wl.c
src/bin/e_focus_policy_history.c
src/bin/e_keyrouter_wl.c

index c25cef0..585251c 100644 (file)
@@ -776,7 +776,6 @@ e_comp_grab_input(Eina_Bool mouse, Eina_Bool kbd)
    if (kbd || e_comp->input_mouse_grabs)
      kwin = e_comp->ee_win;
    //e_comp_override_add(); //nocomp condition
-   g_rec_mutex_lock(&e_comp->input_key_grabs_mutex);
    if ((e_comp->input_mouse_grabs && e_comp->input_key_grabs) ||
        e_grabinput_get(mwin, 0, kwin))
      {
@@ -784,7 +783,6 @@ e_comp_grab_input(Eina_Bool mouse, Eina_Bool kbd)
         e_comp->input_mouse_grabs += mouse;
         e_comp->input_key_grabs += kbd;
      }
-   g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
 
    return ret;
 }
@@ -799,18 +797,14 @@ e_comp_ungrab_input(Eina_Bool mouse, Eina_Bool kbd)
    if (e_comp->input_mouse_grabs)
      e_comp->input_mouse_grabs -= mouse;
 
-   g_rec_mutex_lock(&e_comp->input_key_grabs_mutex);
    if (e_comp->input_key_grabs)
      e_comp->input_key_grabs -= kbd;
-   g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
 
    if (mouse && (!e_comp->input_mouse_grabs))
      mwin = e_comp->ee_win;
 
-   g_rec_mutex_lock(&e_comp->input_key_grabs_mutex);
    if (kbd && (!e_comp->input_key_grabs))
      kwin = e_comp->ee_win;
-   g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
 
    //e_comp_override_timed_pop(); //nocomp condition
    if ((!mwin) && (!kwin)) return;
index 138cb0f..205f98f 100644 (file)
@@ -162,7 +162,7 @@ struct _E_Comp
    Eina_Bool       use_native_type_buffer : 1; // use native buffer type
    Eina_Bool       avoid_afill; // avoid to fill the alpha channel as 0xff. that means filling 0x00.
 
-   unsigned int    input_key_grabs;
+   atomic_uint     input_key_grabs;
    unsigned int    input_mouse_grabs;
 
    E_Comp_Cb        grab_cb;
index a0047c7..b10795d 100644 (file)
@@ -4351,7 +4351,6 @@ e_comp_wl_key_down(Ecore_Event_Key *ev, E_Device *dev)
      }
 
    g_mutex_unlock(&e_comp_wl->kbd.keys_mutex);
-   g_rec_mutex_lock(&e_comp->input_key_grabs_mutex);
 
    if ((!e_client_action_get()) && (!e_comp->input_key_grabs))
      {
@@ -4373,7 +4372,6 @@ e_comp_wl_key_down(Ecore_Event_Key *ev, E_Device *dev)
                        DBG("wl_array_add: Out of memory\n");
                        g_mutex_unlock(&e_comp_wl->kbd.keys_mutex);
                        g_mutex_unlock(&e_comp_wl->kbd.focused_mutex);
-                       g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
                        return EINA_FALSE;
                     }
                   g_mutex_unlock(&e_comp_wl->kbd.keys_mutex);
@@ -4384,8 +4382,6 @@ e_comp_wl_key_down(Ecore_Event_Key *ev, E_Device *dev)
           }
      }
 
-   g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
-
    /* update modifier state */
    e_comp_wl_input_keyboard_state_update(keycode, EINA_TRUE);
 
@@ -4429,7 +4425,6 @@ e_comp_wl_key_up(Ecore_Event_Key *ev, E_Device *dev)
    g_mutex_unlock(&e_comp_wl->kbd.keys_mutex);
 
    /* If a key down event have been sent to clients, send a key up event to client for garantee key event sequence pair. (down/up) */
-   g_rec_mutex_lock(&e_comp->input_key_grabs_mutex);
    if ((delivered_key) ||
        ((!e_client_action_get()) && (!e_comp->input_key_grabs)))
      {
@@ -4442,7 +4437,6 @@ e_comp_wl_key_up(Ecore_Event_Key *ev, E_Device *dev)
           }
         g_mutex_unlock(&e_comp_wl->kbd.focused_mutex);
      }
-   g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
 
    /* update modifier state */
    e_comp_wl_input_keyboard_state_update(keycode, EINA_FALSE);
index 9f5e4c1..bfb660d 100644 (file)
@@ -1132,13 +1132,10 @@ _focus_policy_history_cb_zone_focus_reset(struct wl_listener *listener, void *da
         if (!desk) continue;
         if (desk->visible && (!ec->iconic))
           {
-             g_rec_mutex_lock(&e_comp->input_key_grabs_mutex);
              if (e_comp->input_key_grabs || e_comp->input_mouse_grabs)
                {
-                  g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
                   break;
                }
-             g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
 
              ELOGF("FOCUS_HISTORY", "focus set   | refocus", ec);
              e_client_frame_focus_set(ec, EINA_TRUE);
index d28b088..7770df0 100644 (file)
@@ -106,7 +106,6 @@ e_keyrouter_wl_key_send(Ecore_Event_Key *ev, E_Device *dev, Eina_Bool pressed, s
         return EINA_FALSE;
      }
 
-   g_rec_mutex_lock(&e_comp->input_key_grabs_mutex);
    if ((!e_client_action_get()) && (!e_comp->input_key_grabs))
      {
         ec = e_client_focused_get();
@@ -129,7 +128,6 @@ e_keyrouter_wl_key_send(Ecore_Event_Key *ev, E_Device *dev, Eina_Bool pressed, s
              e_comp_wl_input_keyboard_state_update(keycode, pressed);
           }
      }
-   g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
    return !!ec;
 }