From 0db513ac1fc26c44ed81e13aff64dcb4c5a3de89 Mon Sep 17 00:00:00 2001 From: "Junkyeong, Kim" Date: Mon, 21 Feb 2022 16:35:06 +0900 Subject: [PATCH] Set buffer changed flag only visible window's event Change-Id: I3cc1024b11a79ae37f58c4e479425b05a95caed4 Signed-off-by: Junkyeong, Kim --- src/e_mod_rdp.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/e_mod_rdp.c b/src/e_mod_rdp.c index b88f204..9e18b2b 100644 --- a/src/e_mod_rdp.c +++ b/src/e_mod_rdp.c @@ -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; -- 2.7.4