e_hwc_window: don't change buffer of ec when recover buffer 12/227712/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Thu, 12 Mar 2020 11:00:42 +0000 (20:00 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Mon, 16 Mar 2020 04:40:38 +0000 (13:40 +0900)
if buffer of ec is null, null buffer attach to ec after recover buffer

Change-Id: Iba5244a1db3d4de08c0fd008dfddc0950dcaa185

src/bin/e_hwc_window.c

index 4745603fb2a5586ec0a2400ac3579b7588aac7c5..f62aa6611215a73d83dcbb36c08817a9b29ab342 100644 (file)
@@ -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));