e_comp_wl: check if wl_client of wl_surface is the same as the wl_keyboard's 35/321335/1
authorduna.oh <duna.oh@samsung.com>
Wed, 19 Mar 2025 03:53:18 +0000 (12:53 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 19 Mar 2025 05:04:17 +0000 (14:04 +0900)
This fixes the following errors.
-----------------------------------
compositor bug: The compositor tried to use an object from one client
in a 'wl_keyboard.enter' for a different client.

Change-Id: Ie6bd81d3cbc6e45fe2df6f890f620ad7cebc3189

src/bin/server/e_comp_wl.c
src/bin/server/e_comp_wl_input.c

index aa459bf9c0eba31447c107bcce742c2cebb9e403..bcac8cfe6e84bf2722fa8fe3d122a509230a01c2 100644 (file)
@@ -2180,7 +2180,8 @@ _e_comp_wl_input_thread_focus_out(void *data)
               wl_keyboard_send_key(res, serial, t,
                                    k->key, WL_KEYBOARD_KEY_STATE_RELEASED);
           }
-        wl_keyboard_send_leave(res, serial, surface);
+        if (wl_resource_get_client(res) == wl_resource_get_client(surface))
+          wl_keyboard_send_leave(res, serial, surface);
         e_comp_input_key->kbd.focused =
            eina_list_remove_list(e_comp_input_key->kbd.focused, l);
      }
index c5d321eea995ddb59be0e8a3c477b2192e68852b..084c1497a8b6bfea5a732d4193fc2836aaaf276d 100644 (file)
@@ -120,6 +120,7 @@ e_comp_wl_input_keyboard_enter_send(struct wl_resource *surface)
    g_rec_mutex_lock(&e_comp_input_key->kbd.focused_mutex);
    EINA_LIST_FOREACH(e_comp_input_key->kbd.focused, l, res)
      {
+        if (wl_resource_get_client(res) == wl_resource_get_client(surface))
         wl_keyboard_send_enter(res, serial, surface,
                                &e_comp_input_key->kbd.keys);