Add uniconify client event 37/274137/1
authorJunkyeong, Kim <jk0430.kim@samsung.com>
Fri, 22 Apr 2022 02:52:22 +0000 (11:52 +0900)
committerJunkyeong, Kim <jk0430.kim@samsung.com>
Fri, 22 Apr 2022 02:52:26 +0000 (11:52 +0900)
To check visibility changing by back key, add uniconify event.

Change-Id: I305757a75275b5f1ba50f607b8dc2b5571562409
Signed-off-by: Junkyeong, Kim <jk0430.kim@samsung.com>
src/e_mod_rdp.c

index c662036..78916cd 100644 (file)
@@ -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;