_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;
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;
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,
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;
}
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));