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)
{
- struct wl_array grab_result_list = {0,};
- E_Keyrouter_Grab_Result *grab_result = NULL;
E_Keyrouter_Grab_Request *grab_request = NULL;
int res = TIZEN_KEYROUTER_ERROR_NONE;
TRACE_INPUT_BEGIN(_e_keyrouter_cb_keygrab_set_list);
- wl_array_init(&grab_result_list);
-
- if (0 != (_e_keyrouter_wl_array_length(grab_list) % 2))
+ if (0 != (_e_keyrouter_wl_array_length(grab_list) % 3))
{
/* FIX ME: Which way is effectively to notify invalid pair to client */
KLWRN("Invalid keycode and grab mode pair. Check arguments in a list\n");
- grab_result = wl_array_add(&grab_result_list, sizeof(E_Keyrouter_Grab_Result));
- if (grab_result)
- {
- grab_result->request_data.key = 0;
- grab_result->request_data.mode = 0;
- grab_result->err = TIZEN_KEYROUTER_ERROR_INVALID_ARRAY;
- }
- goto send_notify;
+ TRACE_INPUT_END();
+ tizen_keyrouter_send_keygrab_notify_list(resource, surface, NULL);
+ return;
}
wl_array_for_each(grab_request, grab_list)
{
KLINF("Grab request using list (client: %p, surface: %p, pid: %d, key: %d, mode: %d]\n", client, surface, e_keyrouter_util_get_pid(client, surface), grab_request->key, grab_request->mode);
res = _e_keyrouter_keygrab_set(client, surface, grab_request->key, grab_request->mode);
- grab_result = wl_array_add(&grab_result_list, sizeof(E_Keyrouter_Grab_Result));
- if (grab_result)
- {
- grab_result->request_data.key = grab_request->key;
- grab_result->request_data.mode = grab_request->mode;
- grab_result->err = res;
- }
+ grab_request->err = res;
}
-send_notify:
TRACE_INPUT_END();
- tizen_keyrouter_send_keygrab_notify_list(resource, surface, &grab_result_list);
- wl_array_release(&grab_result_list);
+ 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)
{
- struct wl_array grab_result_list = {0,};
- E_Keyrouter_Grab_Result *grab_result = NULL;
- int *ungrab_request = NULL;
+ E_Keyrouter_Ungrab_Request *ungrab_request = NULL;
int res = TIZEN_KEYROUTER_ERROR_NONE;
TRACE_INPUT_BEGIN(_e_keyrouter_cb_keygrab_unset_list);
- wl_array_init(&grab_result_list);
+ if (0 != (_e_keyrouter_wl_array_length(ungrab_list) % 2))
+ {
+ /* FIX ME: Which way is effectively to notify invalid pair to client */
+ KLWRN("Invalid keycode and error pair. Check arguments in a list\n");
+ TRACE_INPUT_END();
+ tizen_keyrouter_send_keygrab_notify_list(resource, surface, ungrab_list);
+ return;
+ }
wl_array_for_each(ungrab_request, ungrab_list)
{
- KLINF("Ungrab request using list (client: %p, surface: %p, pid: %d, key: %d, res: %d]\n", client, surface, e_keyrouter_util_get_pid(client, surface), *ungrab_request, res);
- res = _e_keyrouter_keygrab_unset(client, surface, *ungrab_request);
- grab_result = wl_array_add(&grab_result_list, sizeof(E_Keyrouter_Grab_Result));
- if (grab_result)
- {
- grab_result->request_data.key = *ungrab_request;
- grab_result->request_data.mode = TIZEN_KEYROUTER_MODE_NONE;
- grab_result->err = res;
- }
+ KLINF("Ungrab request using list (client: %p, surface: %p, pid: %d, key: %d, res: %d]\n", client, surface, e_keyrouter_util_get_pid(client, surface), ungrab_request->key, res);
+ res = _e_keyrouter_keygrab_unset(client, surface, ungrab_request->key);
+ ungrab_request->err = res;
}
TRACE_INPUT_END();
- tizen_keyrouter_send_keygrab_notify_list(resource, surface, &grab_result_list);
- wl_array_release(&grab_result_list);
+ tizen_keyrouter_send_keygrab_notify_list(resource, surface, ungrab_list);
}
static void
{
E_Keyrouter_Key_List_NodePtr key_node_data = NULL;
struct wl_array grab_result_list = {0,};
- E_Keyrouter_Grab_Result *grab_result = NULL;
+ E_Keyrouter_Grab_Request *grab_result = NULL;
E_Keyrouter_Registered_Window_Info *rwin_info = NULL;
Eina_List *l = NULL, *ll = NULL, *l_next = NULL;
int *key_data;
{
if (surface == key_node_data->surface)
{
- grab_result = wl_array_add(&grab_result_list, sizeof(E_Keyrouter_Grab_Result));
+ grab_result = wl_array_add(&grab_result_list, sizeof(E_Keyrouter_Grab_Request));
if (grab_result)
{
- grab_result->request_data.key = i;
- grab_result->request_data.mode = TIZEN_KEYROUTER_MODE_EXCLUSIVE;
+ grab_result->key = i;
+ grab_result->mode = TIZEN_KEYROUTER_MODE_EXCLUSIVE;
+ grab_result->err = TIZEN_KEYROUTER_ERROR_NONE;
}
}
}
{
if (surface == key_node_data->surface)
{
- grab_result = wl_array_add(&grab_result_list, sizeof(E_Keyrouter_Grab_Result));
+ grab_result = wl_array_add(&grab_result_list, sizeof(E_Keyrouter_Grab_Request));
if (grab_result)
{
- grab_result->request_data.key = i;
- grab_result->request_data.mode = TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE;
+ grab_result->key = i;
+ grab_result->mode = TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE;
+ grab_result->err = TIZEN_KEYROUTER_ERROR_NONE;
}
}
}
{
if (surface == key_node_data->surface)
{
- grab_result = wl_array_add(&grab_result_list, sizeof(E_Keyrouter_Grab_Result));
+ grab_result = wl_array_add(&grab_result_list, sizeof(E_Keyrouter_Grab_Request));
if (grab_result)
{
- grab_result->request_data.key = i;
- grab_result->request_data.mode = TIZEN_KEYROUTER_MODE_TOPMOST;
+ grab_result->key = i;
+ grab_result->mode = TIZEN_KEYROUTER_MODE_TOPMOST;
+ grab_result->err = TIZEN_KEYROUTER_ERROR_NONE;
}
}
}
{
if (surface == key_node_data->surface)
{
- grab_result = wl_array_add(&grab_result_list, sizeof(E_Keyrouter_Grab_Result));
+ grab_result = wl_array_add(&grab_result_list, sizeof(E_Keyrouter_Grab_Request));
if (grab_result)
{
- grab_result->request_data.key = i;
- grab_result->request_data.mode = TIZEN_KEYROUTER_MODE_SHARED;
+ grab_result->key = i;
+ grab_result->mode = TIZEN_KEYROUTER_MODE_SHARED;
+ grab_result->err = TIZEN_KEYROUTER_ERROR_NONE;
}
}
}
{
EINA_LIST_FOREACH(rwin_info->keys, ll, key_data)
{
- grab_result = wl_array_add(&grab_result_list, sizeof(E_Keyrouter_Grab_Result));
+ grab_result = wl_array_add(&grab_result_list, sizeof(E_Keyrouter_Grab_Request));
if (grab_result)
{
- grab_result->request_data.key = *key_data;
- grab_result->request_data.mode = TIZEN_KEYROUTER_MODE_REGISTERED;
+ grab_result->key = *key_data;
+ grab_result->mode = TIZEN_KEYROUTER_MODE_REGISTERED;
+ grab_result->err = TIZEN_KEYROUTER_ERROR_NONE;
}
}
}