summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2016-03-12 12:40:39 -0500
committerMike Blumenkrantz <zmike@osg.samsung.com>2016-03-12 12:40:39 -0500
commit1a9148608304913e0ff4bb1b242f297777d91817 (patch)
tree1a639e4f59c9ac814ad4a53ca1e56ce0a68137e8
parentb2107ae2b00c4907b991be9eda439eded46cc40e (diff)
downloadenlightenment-1a9148608304913e0ff4bb1b242f297777d91817.tar.gz
always send wl key releases if surface still exists
fixes stuck keys for wl_clients with multiple surfaces
-rw-r--r--src/bin/e_comp_wl.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 0015fb51f4..c2aa458d25 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);
}
}