From: JengHyun Kang Date: Mon, 4 Jul 2016 02:54:11 +0000 (+0900) Subject: Revert "Revert "Allocate a grab list memory in the client"" X-Git-Tag: submit/tizen/20160704.043131^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bc656e3f6c8c55d015800018292457a351c802a9;p=platform%2Fcore%2Fuifw%2Fe-mod-tizen-keyrouter.git Revert "Revert "Allocate a grab list memory in the client"" This reverts commit 25bb1154fee986799ee9a04615962a5f1a935729. Change-Id: Ie421a8ad2c206e675ecadd16a667c9499480f19f --- diff --git a/src/e_mod_main_wl.c b/src/e_mod_main_wl.c index 38636e9..9f646fa 100644 --- a/src/e_mod_main_wl.c +++ b/src/e_mod_main_wl.c @@ -191,76 +191,57 @@ _e_keyrouter_cb_get_keygrab_status(struct wl_client *client, struct wl_resource 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 @@ -428,7 +409,7 @@ _e_keyrouter_cb_keygrab_get_list(struct wl_client *client, struct wl_resource *r { 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; @@ -444,11 +425,12 @@ _e_keyrouter_cb_keygrab_get_list(struct wl_client *client, struct wl_resource *r { 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; } } } @@ -456,11 +438,12 @@ _e_keyrouter_cb_keygrab_get_list(struct wl_client *client, struct wl_resource *r { 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; } } } @@ -468,11 +451,12 @@ _e_keyrouter_cb_keygrab_get_list(struct wl_client *client, struct wl_resource *r { 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; } } } @@ -480,11 +464,12 @@ _e_keyrouter_cb_keygrab_get_list(struct wl_client *client, struct wl_resource *r { 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; } } } @@ -496,11 +481,12 @@ _e_keyrouter_cb_keygrab_get_list(struct wl_client *client, struct wl_resource *r { 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; } } } diff --git a/src/e_mod_main_wl.h b/src/e_mod_main_wl.h index 972f85c..27c63c9 100644 --- a/src/e_mod_main_wl.h +++ b/src/e_mod_main_wl.h @@ -45,7 +45,7 @@ typedef struct _E_Keyrouter_Key_List_Node* E_Keyrouter_Key_List_NodePtr; typedef struct _E_Keyrouter_Tizen_HWKey E_Keyrouter_Tizen_HWKey; typedef struct _E_Keyrouter_Grabbed_Key E_Keyrouter_Grabbed_Key; typedef struct _E_Keyrouter_Grab_Request E_Keyrouter_Grab_Request; -typedef struct _E_Keyrouter_Grab_Result E_Keyrouter_Grab_Result; +typedef struct _E_Keyrouter_Ungrab_Request E_Keyrouter_Ungrab_Request; typedef struct _E_Keyrouter_Registered_Window_Info E_Keyrouter_Registered_Window_Info; typedef struct _E_Keyrouter_Conf_Edd E_Keyrouter_Conf_Edd; @@ -143,10 +143,11 @@ struct _E_Keyrouter struct _E_Keyrouter_Grab_Request { int key; int mode; + int err; }; -struct _E_Keyrouter_Grab_Result { - E_Keyrouter_Grab_Request request_data; +struct _E_Keyrouter_Ungrab_Request { + int key; int err; };