From 3b66ec09ac078b55b0af4f45e44760645e336d7f Mon Sep 17 00:00:00 2001 From: JengHyun Kang Date: Wed, 29 Mar 2017 17:08:41 +0900 Subject: [PATCH] Do not send release key event, if client is ungrabbed or dead Change-Id: I1dc4dbd50553fa09169118c2f5aeee01efeea153 --- src/e_mod_keyrouter_events.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/e_mod_keyrouter_events.c b/src/e_mod_keyrouter_events.c index 62f8a36..4207189 100644 --- a/src/e_mod_keyrouter_events.c +++ b/src/e_mod_keyrouter_events.c @@ -137,17 +137,26 @@ _e_keyrouter_send_key_events_release(int type, Ecore_Event_Key *ev) res = _e_keyrouter_send_key_event(type, key_node_data->surface, key_node_data->wc, ev, key_node_data->focused, TIZEN_KEYROUTER_MODE_PRESSED); - pid = e_keyrouter_util_get_pid(key_node_data->wc, key_node_data->surface); - cmd = e_keyrouter_util_cmd_get_from_pid(pid); - pname = e_keyrouter_util_process_name_get_from_cmd(cmd); - KLINF("Release Pair : %s(%s:%d)(Focus: %d)(Status: %d) => wl_surface (%p) wl_client (%p) (pid: %d) (pname: %s)", - ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, key_node_data->focused, - key_node_data->status, key_node_data->surface, key_node_data->wc, pid, pname ?: "Unknown"); + if (key_node_data->status == E_KRT_CSTAT_ALIVE) + { + pid = e_keyrouter_util_get_pid(key_node_data->wc, key_node_data->surface); + cmd = e_keyrouter_util_cmd_get_from_pid(pid); + pname = e_keyrouter_util_process_name_get_from_cmd(cmd); + KLINF("Release Pair : %s(%s:%d)(Focus: %d)(Status: %d) => wl_surface (%p) wl_client (%p) (pid: %d) (pname: %s)", + ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, key_node_data->focused, + key_node_data->status, key_node_data->surface, key_node_data->wc, pid, pname ?: "Unknown"); + if(pname) E_FREE(pname); + if(cmd) E_FREE(cmd); + } + else + { + KLINF("Release Pair : %s(%s:%d)(Focus: %d)(Status: %d) => wl_surface (%p) wl_client (%p) process is ungrabbed / dead", + ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, key_node_data->focused, + key_node_data->status, key_node_data->surface, key_node_data->wc); + } if (key_node_data->focused && key_node_data->status != E_KRT_CSTAT_ALIVE) ev->data = (void *)0x1; - if(pname) E_FREE(pname); - if(cmd) E_FREE(cmd); E_FREE(key_node_data); if (res == EINA_FALSE) ret = EINA_FALSE; } -- 2.7.4