discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=1a9148608304913e0ff4bb1b242f297777d91817

commit 1a9148608304913e0ff4bb1b242f297777d91817
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Sat Mar 12 12:40:39 2016 -0500

    always send wl key releases if surface still exists
    
    fixes stuck keys for wl_clients with multiple surfaces
---
 src/bin/e_comp_wl.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 0015fb5..c2aa458 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -528,21 +528,15 @@ _e_comp_wl_keyboard_leave(E_Client *ec)
    if (!ec->comp_data->surface) return;
 
    wc = wl_resource_get_client(ec->comp_data->surface);
-   if (!e_object_is_del(E_OBJECT(ec)))
-     {
-        serial = wl_display_next_serial(e_comp_wl->wl.disp);
-        t = ecore_time_unix_get();
-     }
+   serial = wl_display_next_serial(e_comp_wl->wl.disp);
+   t = ecore_time_unix_get();
    EINA_LIST_FOREACH_SAFE(e_comp_wl->kbd.focused, l, ll, res)
      {
         if (wl_resource_get_client(res) != wc) continue;
-        if (!e_object_is_del(E_OBJECT(ec)))
-          {
-             wl_array_for_each(k, &e_comp_wl->kbd.keys)
-               wl_keyboard_send_key(res, serial, t,
-                                    *k, WL_KEYBOARD_KEY_STATE_RELEASED);
-             wl_keyboard_send_leave(res, serial, ec->comp_data->surface);
-          }
+        wl_array_for_each(k, &e_comp_wl->kbd.keys)
+          wl_keyboard_send_key(res, serial, t,
+                               *k, WL_KEYBOARD_KEY_STATE_RELEASED);
+        wl_keyboard_send_leave(res, serial, ec->comp_data->surface);
         e_comp_wl->kbd.focused = eina_list_remove_list(e_comp_wl->kbd.focused, 
l);
      }
 }

-- 


Reply via email to