From 1fa067656360c80bd89523962a8461ec050422fc Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Tue, 11 Jun 2024 08:47:07 +0900 Subject: [PATCH] e_keyrouter_wl: refactor code make a code clear to read and add missing code Change-Id: Id1261625f9f341aa48071fb440be6741251ae1e8 --- src/bin/inputmgr/e_keyrouter_intern.h | 2 +- src/bin/inputmgr/e_keyrouter_list.c | 4 +-- src/bin/server/e_keyrouter_wl.c | 48 ++++++++++++++++++++++++----------- 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/src/bin/inputmgr/e_keyrouter_intern.h b/src/bin/inputmgr/e_keyrouter_intern.h index d8a72c0..71f1e12 100644 --- a/src/bin/inputmgr/e_keyrouter_intern.h +++ b/src/bin/inputmgr/e_keyrouter_intern.h @@ -178,7 +178,7 @@ EINTERN void e_keyrouter_conf_deinit(E_Keyrouter_Config_Data *kconfig); EINTERN int e_keyrouter_cb_picture_off(const int option, void *data); EINTERN int e_keyrouter_keygrab_set(struct wl_client *client, struct wl_resource *surface, int key, int mode); -EINTERN int e_keyrouter_keygrab_unset(struct wl_client *client, struct wl_resource *surface, int key); +EINTERN void e_keyrouter_keygrab_unset(struct wl_client *client, struct wl_resource *surface, int key); EINTERN Eina_Bool e_keyrouter_event_process(void *event, E_Device *dev, int type); diff --git a/src/bin/inputmgr/e_keyrouter_list.c b/src/bin/inputmgr/e_keyrouter_list.c index 4a7b48a..5b949e9 100644 --- a/src/bin/inputmgr/e_keyrouter_list.c +++ b/src/bin/inputmgr/e_keyrouter_list.c @@ -512,7 +512,7 @@ e_keyrouter_keygrab_set(struct wl_client *client, struct wl_resource *surface, i return res; } -int +void e_keyrouter_keygrab_unset(struct wl_client *client, struct wl_resource *surface, int key) { /* Ungrab top position grabs first. This grab mode do not need privilege */ @@ -559,6 +559,4 @@ e_keyrouter_keygrab_unset(struct wl_client *client, struct wl_resource *surface, finish: e_keyrouter_keycancel_send(client, surface, key); - - return TIZEN_KEYROUTER_ERROR_NONE; } diff --git a/src/bin/server/e_keyrouter_wl.c b/src/bin/server/e_keyrouter_wl.c index edcf594..dc186cc 100644 --- a/src/bin/server/e_keyrouter_wl.c +++ b/src/bin/server/e_keyrouter_wl.c @@ -345,22 +345,33 @@ _e_keyrouter_cb_keygrab_set(struct wl_client *client, struct wl_resource *resour static void _e_keyrouter_input_thread_keygrab_unset(void *data) { - int res = 0; E_Input_Thread_Request_Keygrab_Data *keygrab_data = data; - EINA_SAFETY_ON_NULL_RETURN(keygrab_data); + int res = 0; + + res = _e_keyrouter_keygrab_key_available_check(keygrab_data->key); + if (res != TIZEN_KEYROUTER_ERROR_NONE) + goto failed; - res = e_keyrouter_keygrab_unset(keygrab_data->client, keygrab_data->surface, keygrab_data->key); + e_keyrouter_keygrab_unset(keygrab_data->client, + keygrab_data->surface, keygrab_data->key); - TRACE_INPUT_END(); + KLDBG("Success to %d key ungrab request (wl_client: %p, wl_surface: %p, pid: %d)", + keygrab_data->key, keygrab_data->client, keygrab_data->surface, + e_keyrouter_util_get_pid(keygrab_data->client, keygrab_data->surface)); + + tizen_keyrouter_send_keygrab_notify(keygrab_data->resource, + keygrab_data->surface, keygrab_data->key, TIZEN_KEYROUTER_MODE_NONE, res); - if (res == TIZEN_KEYROUTER_ERROR_NONE) - KLDBG("Success to %d key ungrab request (wl_client: %p, wl_surface: %p, pid: %d)", keygrab_data->key, keygrab_data->client, keygrab_data->surface, - e_keyrouter_util_get_pid(keygrab_data->client, keygrab_data->surface)); - else - KLINF("Failed to %d key ungrab request (wl_client: %p, wl_surface: %p, pid: %d): res: %d", keygrab_data->key, keygrab_data->client, keygrab_data->surface, - e_keyrouter_util_get_pid(keygrab_data->client, keygrab_data->surface), res); + return; + +failed: + KLINF("Failed to %d key ungrab request (wl_client: %p, wl_surface: %p, pid: %d): res: %d", + keygrab_data->key, keygrab_data->client, keygrab_data->surface, + e_keyrouter_util_get_pid(keygrab_data->client, keygrab_data->surface), + res); - tizen_keyrouter_send_keygrab_notify(keygrab_data->resource, keygrab_data->surface, keygrab_data->key, TIZEN_KEYROUTER_MODE_NONE, res); + tizen_keyrouter_send_keygrab_notify(keygrab_data->resource, + keygrab_data->surface, keygrab_data->key, TIZEN_KEYROUTER_MODE_NONE, res); } /* tizen_keyrouter unset_keygrab request handler */ @@ -377,8 +388,12 @@ _e_keyrouter_cb_keygrab_unset(struct wl_client *client, struct wl_resource *reso keygrab_data.key = key; keygrab_data.mode = TIZEN_KEYROUTER_MODE_NONE; /* UNUSED */ - INF("client: %p, surface: %p, key: %d\n", keygrab_data.client, keygrab_data.surface, keygrab_data.key); + INF("client: %p, surface: %p, key: %d\n", keygrab_data.client, + keygrab_data.surface, keygrab_data.key); + _e_keyrouter_input_thread_keygrab_unset(&keygrab_data); + + TRACE_INPUT_END(); } /* tizen_keyrouter get_keygrab_status request handler */ @@ -477,20 +492,23 @@ _e_keyrouter_cb_keygrab_unset_list(struct wl_client *client, struct wl_resource if (res != TIZEN_KEYROUTER_ERROR_NONE) goto done; - res = e_keyrouter_keygrab_unset(client, surface, ungrab_request->key); + e_keyrouter_keygrab_unset(client, surface, ungrab_request->key); done: 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)); + 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); + ungrab_request->key, client, surface, + e_keyrouter_util_get_pid(client, surface), ungrab_request->err); } TRACE_INPUT_END(); + tizen_keyrouter_send_keygrab_notify_list(resource, surface, ungrab_list); } -- 2.7.4