e_keyrouter_set_keygrab_in_list(struct wl_resource *surface, struct wl_client *client, uint32_t key, uint32_t mode)
{
int res = TIZEN_KEYROUTER_ERROR_NONE;
+ Eina_List *keylist_ptr = NULL, *l = NULL;
+ E_Keyrouter_Key_List_NodePtr kdata = NULL;
+ int pid;
EINA_SAFETY_ON_FALSE_RETURN_VAL
(((mode == TIZEN_KEYROUTER_MODE_EXCLUSIVE) ||
(mode == TIZEN_KEYROUTER_MODE_SHARED)),
TIZEN_KEYROUTER_ERROR_INVALID_MODE);
- if (mode == TIZEN_KEYROUTER_MODE_EXCLUSIVE)
+ if ((mode == TIZEN_KEYROUTER_MODE_EXCLUSIVE) && (krt->HardKeys[key].excl_ptr != NULL))
{
- EINA_SAFETY_ON_TRUE_RETURN_VAL
- ((krt->HardKeys[key].excl_ptr != NULL),
- TIZEN_KEYROUTER_ERROR_GRABBED_ALREADY);
+ keylist_ptr = krt->HardKeys[key].excl_ptr;
+
+ EINA_LIST_FOREACH(keylist_ptr, l, kdata)
+ {
+ pid = e_keyrouter_util_get_pid(kdata->wc, kdata->surface);
+ KLINF("The key(%d) is already grabbed exclusively by other [surface: %p, client: %p, pid:%d(%s)]",
+ key, kdata->surface, kdata->wc, pid, e_keyrouter_util_cmd_get_from_pid(pid));
+ }
+ return TIZEN_KEYROUTER_ERROR_GRABBED_ALREADY;
}
if (mode == TIZEN_KEYROUTER_MODE_TOPMOST)