From 33873ca8b76e684e06ddc76049ef4e82603ecdbb Mon Sep 17 00:00:00 2001 From: "Junkyeong, Kim" Date: Fri, 22 Apr 2022 11:52:22 +0900 Subject: [PATCH] Add uniconify client event To check visibility changing by back key, add uniconify event. Change-Id: I305757a75275b5f1ba50f607b8dc2b5571562409 Signed-off-by: Junkyeong, Kim --- src/e_mod_rdp.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/src/e_mod_rdp.c b/src/e_mod_rdp.c index c662036..78916cd 100644 --- a/src/e_mod_rdp.c +++ b/src/e_mod_rdp.c @@ -1397,6 +1397,62 @@ _e_rdp_cb_client_buffer_change(void *data, int type, void *event) return ECORE_CALLBACK_PASS_ON; } +static Eina_Bool +_e_rdp_cb_client_uniconify(void *data, int type, void *event) +{ + E_Rdp_Backend *b = NULL; + E_Rdp_Output *output = NULL; + E_Event_Client *ev = event; + E_Client *ec = NULL; + E_Hwc *hwc = NULL; + E_Hwc_Window *hwc_window = NULL; + Eina_List *l; + Eina_Bool find = EINA_FALSE; + + EINA_SAFETY_ON_NULL_RETURN_VAL(ev, ECORE_CALLBACK_PASS_ON); + EINA_SAFETY_ON_NULL_RETURN_VAL(ev->ec, ECORE_CALLBACK_PASS_ON); + + ec = ev->ec; + EINA_SAFETY_ON_TRUE_RETURN_VAL(e_object_is_del(E_OBJECT(ec)), ECORE_CALLBACK_PASS_ON); + EINA_SAFETY_ON_NULL_RETURN_VAL(ec->pixmap, ECORE_CALLBACK_PASS_ON); + + b = g_rdp_backend; + EINA_SAFETY_ON_NULL_RETURN_VAL(b, ECORE_CALLBACK_PASS_ON); + EINA_SAFETY_ON_NULL_RETURN_VAL(b->output, ECORE_CALLBACK_PASS_ON); + output = b->output; + if (b->client_count == 0) + return ECORE_CALLBACK_PASS_ON; + + EINA_SAFETY_ON_NULL_RETURN_VAL(output, ECORE_CALLBACK_PASS_ON); + EINA_SAFETY_ON_NULL_RETURN_VAL(output->primary_output, ECORE_CALLBACK_PASS_ON); + EINA_SAFETY_ON_NULL_RETURN_VAL(output->primary_output->hwc, ECORE_CALLBACK_PASS_ON); + + hwc = output->primary_output->hwc; + + EINA_LIST_FOREACH(hwc->hwc_windows, l, hwc_window) + { + if (!hwc_window) continue; + if (hwc_window->is_target) continue; + if (hwc_window->is_video) continue; + + if (hwc_window == ec->hwc_window) + { + find = EINA_TRUE; + break; + } + } + + if (find == EINA_FALSE) + return ECORE_CALLBACK_PASS_ON; + + if (!output->frame_timer) + output->frame_timer = ecore_timer_add(output->refresh_time, _e_rdp_frame_timer, output); + output->refresh_count = 5; + output->buffer_changed = EINA_TRUE; + + return ECORE_CALLBACK_PASS_ON; +} + static void _e_rdp_cb_pointer_mouse_move(void *data, E_Pointer *ptr) { @@ -2210,6 +2266,7 @@ e_rdp_backend_create(E_Rdp_Conf_Edd *config) goto err_listener; E_LIST_HANDLER_APPEND(b->handlers, E_EVENT_CLIENT_BUFFER_CHANGE, _e_rdp_cb_client_buffer_change, g_rdp_backend); + E_LIST_HANDLER_APPEND(b->handlers, E_EVENT_CLIENT_UNICONIFY, _e_rdp_cb_client_uniconify, g_rdp_backend); pointer_hook = e_pointer_hook_add(E_POINTER_HOOK_MOUSE_MOVE, _e_rdp_cb_pointer_mouse_move, g_rdp_backend); g_rdp_backend = b; -- 2.7.4