diff options
author | Mike Blumenkrantz <zmike@osg.samsung.com> | 2016-03-12 12:40:39 -0500 |
---|---|---|
committer | Mike Blumenkrantz <zmike@osg.samsung.com> | 2016-03-12 12:40:39 -0500 |
commit | 1a9148608304913e0ff4bb1b242f297777d91817 (patch) | |
tree | 1a639e4f59c9ac814ad4a53ca1e56ce0a68137e8 | |
parent | b2107ae2b00c4907b991be9eda439eded46cc40e (diff) | |
download | enlightenment-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.c | 18 |
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); } } |