Set buffer changed flag only visible window's event 34/271434/1
authorJunkyeong, Kim <jk0430.kim@samsung.com>
Mon, 21 Feb 2022 07:35:06 +0000 (16:35 +0900)
committerJunkyeong, Kim <jk0430.kim@samsung.com>
Mon, 21 Feb 2022 07:35:09 +0000 (16:35 +0900)
Change-Id: I3cc1024b11a79ae37f58c4e479425b05a95caed4
Signed-off-by: Junkyeong, Kim <jk0430.kim@samsung.com>
src/e_mod_rdp.c

index b88f204..9e18b2b 100644 (file)
@@ -1183,6 +1183,10 @@ _e_rdp_cb_client_buffer_change(void *data, int type, void *event)
    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);
@@ -1198,6 +1202,29 @@ _e_rdp_cb_client_buffer_change(void *data, int type, void *event)
    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->state == E_HWC_WINDOW_STATE_NONE || hwc_window->zpos == -999) 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->refresh_count = 5;