{
TRACE_INPUT_BEGIN(_e_keyrouter_cb_keygrab_set);
-#ifdef HAVE_CYNARA
- if (EINA_FALSE == e_keyrouter_wl_util_do_privilege_check(client, mode, key))
- {
- KLINF("No permission for %d grab mode ! (key=%d)", mode, key);
- tizen_keyrouter_send_keygrab_notify(resource, surface, key, mode, TIZEN_KEYROUTER_ERROR_NO_PERMISSION);
- return;
- }
-#endif
-
E_Input_Thread_Request_Keygrab_Data keygrab_data;
keygrab_data.resource = resource;
E_Input_Thread_Request_Keygrab_Data *keygrab_data = data;
EINA_SAFETY_ON_NULL_RETURN(keygrab_data);
- res = e_keyrouter_keygrab_unset(keygrab_data->client, keygrab_data->surface, keygrab_data->key, keygrab_data->priv_result);
+ res = e_keyrouter_keygrab_unset(keygrab_data->client, keygrab_data->surface, keygrab_data->key);
TRACE_INPUT_END();
keygrab_data.client = client;
keygrab_data.key = key;
keygrab_data.mode = TIZEN_KEYROUTER_MODE_NONE; /* UNUSED */
- keygrab_data.priv_result = e_keyrouter_wl_util_do_privilege_check(client, TIZEN_KEYROUTER_MODE_NONE, key);
INF("client: %p, surface: %p, key: %d\n", keygrab_data.client, keygrab_data.surface, keygrab_data.key);
e_input_backend_thread_safe_call(_e_keyrouter_input_thread_keygrab_unset, &keygrab_data, sizeof(E_Input_Thread_Request_Keygrab_Data));
tizen_keyrouter_send_keygrab_notify(resource, surface, key, mode, TIZEN_KEYROUTER_ERROR_NONE);
}
-static void
-_e_keyrouter_input_thread_keygrab_set_list(void *data)
-{
- unsigned int len = 0;
- unsigned int pos = 0;
- E_Keyrouter_Grab_Request grab_request;
- struct wl_array grab_list;
- int *grab_data = NULL;
- int res;
- E_Input_Thread_Request_Keygrab_Data keygrab_data;
-
- memcpy(&keygrab_data, data, sizeof(E_Input_Thread_Request_Keygrab_Data));
- pos += sizeof(E_Input_Thread_Request_Keygrab_Data);
-
- memcpy(&len, data+pos, sizeof(unsigned int));
- pos += sizeof(unsigned int);
-
- INF("client(%p), resource(%p), surface(%p), len(%d)", keygrab_data.client, keygrab_data.resource, keygrab_data.surface, len);
-
- wl_array_init(&grab_list);
-
- for (unsigned int i = 0; i < len; i++)
- {
- memcpy(&grab_request, data+pos, sizeof(E_Keyrouter_Grab_Request));
- pos += sizeof(E_Keyrouter_Grab_Request);
-
- INF("[%s] mode: %d, key : %d, err: %d", __func__, grab_request.mode, grab_request.key, grab_request.err);
-
- if (grab_request.err == TIZEN_KEYROUTER_ERROR_NONE)
- {
- res = e_keyrouter_keygrab_set(keygrab_data.client, keygrab_data.surface, grab_request.key, grab_request.mode);
- grab_request.err = res;
-
- if (res == TIZEN_KEYROUTER_ERROR_NONE)
- KLDBG("Success to %d key %s grab using list(wl_client: %p, wl_surface: %p, pid: %d)",
- grab_request.key, e_keyrouter_mode_to_string(grab_request.mode),
- keygrab_data.client, keygrab_data.surface, e_keyrouter_util_get_pid(keygrab_data.client, keygrab_data.surface));
- else
- KLINF("Failed to %d key %s grab using list(wl_client: %p, wl_surface: %p, pid: %d): res: %d",
- grab_request.key, e_keyrouter_mode_to_string(grab_request.mode),
- keygrab_data.client, keygrab_data.surface, e_keyrouter_util_get_pid(keygrab_data.client, keygrab_data.surface), grab_request.err);
- }
-
- grab_data = wl_array_add(&grab_list, sizeof(int));
- *grab_data = grab_request.key;
- grab_data = wl_array_add(&grab_list, sizeof(int));
- *grab_data = grab_request.mode;
- grab_data = wl_array_add(&grab_list, sizeof(int));
- *grab_data = grab_request.err;
- }
-
- tizen_keyrouter_send_keygrab_notify_list(keygrab_data.resource, keygrab_data.surface, &grab_list);
-
- e_input_wl_events_flush();
-
- wl_array_release(&grab_list);
-}
-
static void
_e_keyrouter_cb_keygrab_set_list(struct wl_client *client, struct wl_resource *resource, struct wl_resource *surface, struct wl_array *grab_list)
{
E_Keyrouter_Grab_Request *grab_request = NULL;
- E_Input_Thread_Request_Keygrab_Data keygrab_data;
+ int res = TIZEN_KEYROUTER_ERROR_NONE;
int array_len = 0;
- unsigned pos = 0;
TRACE_INPUT_BEGIN(_e_keyrouter_cb_keygrab_set_list);
return;
}
- unsigned int list_count = array_len / 3;
- unsigned int data_size = sizeof(E_Input_Thread_Request_Keygrab_Data)+sizeof(unsigned int)+sizeof(E_Keyrouter_Grab_Request)*list_count;
- void *data = calloc(1, data_size);
- if (!data)
- {
- KLWRN("Failed to allocate memory");
- TRACE_INPUT_END();
- return;
- }
-
- memset(&keygrab_data, 0, sizeof(E_Input_Thread_Request_Keygrab_Data));
- keygrab_data.client = client;
- keygrab_data.resource = resource;
- keygrab_data.surface = surface;
-
- memcpy(data, &keygrab_data, sizeof(E_Input_Thread_Request_Keygrab_Data));
- pos += sizeof(E_Input_Thread_Request_Keygrab_Data);
-
- memcpy(data+pos, &list_count, sizeof(unsigned int));
- pos += sizeof(unsigned int);
-
- INF("[%s] client(%p), resource(%p), surface(%p), len(%u), data_size(%u)", __func__, client, resource, surface, list_count, data_size);
-
wl_array_for_each(grab_request, grab_list)
{
-#ifdef HAVE_CYNARA
- if (EINA_FALSE == e_keyrouter_wl_util_do_privilege_check(client, grab_request->mode, grab_request->key))
- {
- KLINF("No permission for %d grab mode ! (key=%d)", grab_request->mode, grab_request->key);
- grab_request->err = TIZEN_KEYROUTER_ERROR_NO_PERMISSION;
- }
-#endif
- INF("[%s] mode: %d, key : %d, err: %d", __func__, grab_request->mode, grab_request->key, grab_request->err);
- memcpy(data+pos, grab_request, sizeof(E_Keyrouter_Grab_Request));
- pos += sizeof(E_Keyrouter_Grab_Request);
- }
-
- e_input_backend_thread_safe_call(_e_keyrouter_input_thread_keygrab_set_list, data, data_size);
-
- free(data);
-
- TRACE_INPUT_END();
-}
-
-static void
-_e_keyrouter_input_thread_keygrab_unset_list(void *data)
-{
- unsigned int len = 0;
- unsigned int pos = 0;
- struct wl_array ungrab_list;
- int *ungrab_data = NULL;
- int res = TIZEN_KEYROUTER_ERROR_NONE;
-
- E_Input_Thread_Request_Keygrab_Data keygrab_data;
- E_Keyrouter_Ungrab_Request ungrab_request;
-
- memcpy(&keygrab_data, data, sizeof(E_Input_Thread_Request_Keygrab_Data));
- pos += sizeof(E_Input_Thread_Request_Keygrab_Data);
-
- memcpy(&len, data+pos, sizeof(unsigned int));
- pos += sizeof(unsigned int);
-
- INF("client(%p), resource(%p), surface(%p), len(%d)", keygrab_data.client, keygrab_data.resource, keygrab_data.surface, len);
-
- wl_array_init(&ungrab_list);
-
- for (unsigned int i = 0; i < len; i++)
- {
- memcpy(&ungrab_request, data+pos, sizeof(E_Keyrouter_Ungrab_Request));
- pos += sizeof(E_Keyrouter_Ungrab_Request);
-
- INF("key : %d, err: %d", ungrab_request.key, ungrab_request.err);
-
- res = e_keyrouter_keygrab_unset(keygrab_data.client, keygrab_data.surface, ungrab_request.key, ungrab_request.err == TIZEN_KEYROUTER_ERROR_NO_PERMISSION ? EINA_FALSE : EINA_TRUE);
- ungrab_request.err = res;
+ res = e_keyrouter_keygrab_set(client, surface, grab_request->key, grab_request->mode);
+ grab_request->err = res;
if (res == TIZEN_KEYROUTER_ERROR_NONE)
- KLDBG("Success to ungrab using list: %d key (wl_client: %p, wl_surface: %p, pid: %d)",
- ungrab_request.key, keygrab_data.client, keygrab_data.surface, e_keyrouter_util_get_pid(keygrab_data.client, keygrab_data.surface));
+ KLDBG("Success to %d key %s grab using list(wl_client: %p, wl_surface: %p, pid: %d)",
+ grab_request->key, e_keyrouter_mode_to_string(grab_request->mode),
+ client, surface, e_keyrouter_util_get_pid(client, surface));
else
- KLINF("Failed to ungrab using list: %d key (wl_client: %p, wl_surface: %p, pid: %d): res: %d",
- ungrab_request.key, keygrab_data.client, keygrab_data.surface, e_keyrouter_util_get_pid(keygrab_data.client, keygrab_data.surface), ungrab_request.err);
-
- ungrab_data = wl_array_add(&ungrab_list, sizeof(int));
- *ungrab_data = ungrab_request.key;
- ungrab_data = wl_array_add(&ungrab_list, sizeof(int));
- *ungrab_data = ungrab_request.err;
+ KLINF("Failed to %d key %s grab using list(wl_client: %p, wl_surface: %p, pid: %d): res: %d",
+ grab_request->key, e_keyrouter_mode_to_string(grab_request->mode),
+ client, surface, e_keyrouter_util_get_pid(client, surface), grab_request->err);
}
- tizen_keyrouter_send_keygrab_notify_list(keygrab_data.resource, keygrab_data.surface, &ungrab_list);
-
- e_input_wl_events_flush();
-
- wl_array_release(&ungrab_list);
+ TRACE_INPUT_END();
+ tizen_keyrouter_send_keygrab_notify_list(resource, surface, grab_list);
}
static void
_e_keyrouter_cb_keygrab_unset_list(struct wl_client *client, struct wl_resource *resource, struct wl_resource *surface, struct wl_array *ungrab_list)
{
E_Keyrouter_Ungrab_Request *ungrab_request = NULL;
- E_Input_Thread_Request_Keygrab_Data keygrab_data;
-
+ int res = TIZEN_KEYROUTER_ERROR_NONE;
int array_len = 0;
- unsigned int pos = 0;
TRACE_INPUT_BEGIN(_e_keyrouter_cb_keygrab_unset_list);
return;
}
- unsigned int list_count = array_len / 2;
- unsigned int data_size = sizeof(E_Input_Thread_Request_Keygrab_Data)+sizeof(unsigned int)+sizeof(E_Keyrouter_Ungrab_Request)*list_count;
- void *data = calloc(1, data_size);
- if (!data)
- {
- KLWRN("Failed to allocate memory");
- TRACE_INPUT_END();
- return;
- }
-
- memset(&keygrab_data, 0, sizeof(E_Input_Thread_Request_Keygrab_Data));
- keygrab_data.client = client;
- keygrab_data.resource = resource;
- keygrab_data.surface = surface;
-
- memcpy(data, &keygrab_data, sizeof(E_Input_Thread_Request_Keygrab_Data));
- pos += sizeof(E_Input_Thread_Request_Keygrab_Data);
-
- memcpy(data+pos, &list_count, sizeof(unsigned int));
- pos += sizeof(unsigned int);
-
- INF("[%s] client(%p), resource(%p), surface(%p), len(%u), data_size(%u)", __func__, client, resource, surface, list_count, data_size);
-
wl_array_for_each(ungrab_request, ungrab_list)
{
-#ifdef HAVE_CYNARA
- if (EINA_FALSE == e_keyrouter_wl_util_do_privilege_check(client, TIZEN_KEYROUTER_MODE_NONE, ungrab_request->key))
- {
- KLINF("No permission for %d grab mode ! (key=%d)", TIZEN_KEYROUTER_MODE_NONE, ungrab_request->key);
- ungrab_request->err = TIZEN_KEYROUTER_ERROR_NO_PERMISSION;
- }
-#endif
-
- INF("key : %d, err: %d", ungrab_request->key, ungrab_request->err);
- memcpy(data+pos, ungrab_request, sizeof(E_Keyrouter_Ungrab_Request));
- pos += sizeof(E_Keyrouter_Ungrab_Request);
+ res = e_keyrouter_keygrab_unset(client, surface, ungrab_request->key);
+ ungrab_request->err = res;
+ if (res == TIZEN_KEYROUTER_ERROR_NONE)
+ KLDBG("Success to ungrab using list: %d key (wl_client: %p, wl_surface: %p, pid: %d)",
+ ungrab_request->key, client, surface, e_keyrouter_util_get_pid(client, surface));
+ else
+ KLINF("Failed to ungrab using list: %d key (wl_client: %p, wl_surface: %p, pid: %d): res: %d",
+ ungrab_request->key, client, surface, e_keyrouter_util_get_pid(client, surface), ungrab_request->err);
}
- e_input_backend_thread_safe_call(_e_keyrouter_input_thread_keygrab_unset_list, data, data_size);
-
- free(data);
-
TRACE_INPUT_END();
+ tizen_keyrouter_send_keygrab_notify_list(resource, surface, ungrab_list);
}
static void