From d58caa6e4fbc27fbebef4a7bdbd924cb33d6da8f Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Thu, 12 Mar 2020 20:00:42 +0900 Subject: [PATCH] e_hwc_window: don't change buffer of ec when recover buffer if buffer of ec is null, null buffer attach to ec after recover buffer Change-Id: Iba5244a1db3d4de08c0fd008dfddc0950dcaa185 --- src/bin/e_hwc_window.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/bin/e_hwc_window.c b/src/bin/e_hwc_window.c index 4745603fb2..f62aa66112 100644 --- a/src/bin/e_hwc_window.c +++ b/src/bin/e_hwc_window.c @@ -1946,6 +1946,7 @@ static Eina_Bool _e_hwc_window_client_recover(E_Hwc_Window *hwc_window) { E_Comp_Wl_Buffer *recover_buffer = NULL;; + E_Comp_Wl_Buffer *comp_wl_buffer; tbm_surface_h tsurface =NULL; E_Client *ec = NULL; @@ -1956,15 +1957,15 @@ _e_hwc_window_client_recover(E_Hwc_Window *hwc_window) if (e_object_is_del(E_OBJECT(ec))) return EINA_FALSE; - recover_buffer = _e_hwc_window_comp_wl_buffer_get(hwc_window); + comp_wl_buffer = _e_hwc_window_comp_wl_buffer_get(hwc_window); - if ((!recover_buffer) && + if ((!comp_wl_buffer) && (!evas_object_visible_get(ec->frame)) && (ec->exp_iconify.buffer_flush) && (e_policy_visibility_client_is_iconic(ec))) return EINA_FALSE; - if (!recover_buffer) + if (!comp_wl_buffer) { tsurface = e_hwc_window_displaying_surface_get(hwc_window); if (!tsurface) return EINA_FALSE; @@ -1972,6 +1973,8 @@ _e_hwc_window_client_recover(E_Hwc_Window *hwc_window) recover_buffer = e_comp_wl_tbm_buffer_get(tsurface); EINA_SAFETY_ON_NULL_RETURN_VAL(recover_buffer, EINA_FALSE); } + else + recover_buffer = comp_wl_buffer; EHWTRACE("Recover ts:%p -- {%s}", hwc_window->ec, hwc_window->hwc, hwc_window, recover_buffer->tbm_surface, @@ -1982,6 +1985,14 @@ _e_hwc_window_client_recover(E_Hwc_Window *hwc_window) e_hwc_window_buffer_fetch(hwc_window); + e_pixmap_image_refresh(ec->pixmap); + e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h); + e_comp_object_dirty(ec->frame); + e_comp_object_render(ec->frame); + + if (!comp_wl_buffer) + e_comp_wl_surface_attach(ec, NULL); + return EINA_TRUE; } @@ -2008,19 +2019,10 @@ _e_hwc_window_rendered_window_set(E_Hwc_Window *hwc_window, Eina_Bool set) if (hwc_window->ec->redirected) { - if (ret) - { - e_pixmap_image_refresh(ec->pixmap); - e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h); - e_comp_object_dirty(ec->frame); - e_comp_object_render(ec->frame); - e_comp_object_redirected_set(ec->frame, EINA_TRUE); - } - else - { - e_comp_object_redirected_set(ec->frame, EINA_TRUE); - e_comp_object_render_update_del(ec->frame); - } + e_comp_object_redirected_set(ec->frame, EINA_TRUE); + + if (!ret) + e_comp_object_render_update_del(ec->frame); EHWTRACE("Redirect -- {%s}", hwc_window->ec, hwc_window->hwc, hwc_window, e_hwc_window_name_get(hwc_window)); -- 2.34.1