e_hwc_windows: add pp_unset flag 62/202062/2
authorJunkyeong Kim <jk0430.kim@samsung.com>
Fri, 22 Mar 2019 07:23:44 +0000 (16:23 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Mon, 1 Apr 2019 06:55:24 +0000 (06:55 +0000)
need pp_unset flag when pp zoom unset.
make once comp mode buffer to show origin size buffer.
after showing that comp buffer, disable pp_unset flag.

Change-Id: I499716cc49a62c73a1b04c07148dc9ee509983b0
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
src/bin/e_hwc.h
src/bin/e_hwc_windows.c

index 920c672..2fcfb16 100644 (file)
@@ -108,6 +108,7 @@ struct _E_Hwc
    tbm_surface_h         pp_tsurface;
    Eina_Bool             pp_set_info;
    Eina_Bool             pp_set;
+   Eina_Bool             pp_unset;
    Eina_Bool             pp_commit;
    Eina_Bool             pp_output_commit;
    E_Hwc_Window_Commit_Data  *pp_output_commit_data;
index 1f6de61..8ec7bfc 100644 (file)
@@ -1854,6 +1854,13 @@ _e_hwc_windows_device_state_available_update(E_Hwc *hwc)
         goto finish;
      }
 
+   /* make the full_gl_composite when the zoom is disabled */
+   if (hwc->pp_unset)
+     {
+        available = EINA_FALSE;
+        goto finish;
+     }
+
    /* full composite is forced to be set */
    if (e_hwc_deactive_get(hwc))
      {
@@ -1908,6 +1915,9 @@ _e_hwc_windows_changes_update(E_Hwc *hwc)
         /* fetch the target buffer (try acquire) */
         if (_e_hwc_windows_target_buffer_fetch(hwc, EINA_TRUE))
           update_changes = EINA_TRUE;
+
+        if (hwc->pp_unset)
+          update_changes = EINA_TRUE;
      }
 
    EINA_LIST_FOREACH(hwc->hwc_windows, l, hwc_window)
@@ -2194,6 +2204,9 @@ e_hwc_windows_commit(E_Hwc *hwc)
    if (!_e_hwc_windows_commit_data_acquire(hwc))
      return EINA_TRUE;
 
+   if (hwc->pp_unset)
+     hwc->pp_unset = EINA_FALSE;
+
    EHWSTRACE("!!!!!!!! HWC Commit !!!!!!!!", NULL);
 
    if (output->zoom_set)
@@ -2294,6 +2307,7 @@ e_hwc_windows_zoom_set(E_Hwc *hwc, Eina_Rectangle *rect)
    hwc->pp_set = EINA_TRUE;
    hwc->target_hwc_window->skip_surface_set = EINA_TRUE;
    hwc->pp_set_info = EINA_TRUE;
+   hwc->pp_unset = EINA_FALSE;
 
    /* to wake up main loop */
    uint64_t value = 1;
@@ -2320,6 +2334,7 @@ e_hwc_windows_zoom_unset(E_Hwc *hwc)
    hwc->pp_set_info = EINA_FALSE;
    hwc->target_hwc_window->skip_surface_set = EINA_FALSE;
    hwc->pp_set = EINA_FALSE;
+   hwc->pp_unset = EINA_TRUE;
 
    hwc->pp_rect.x = 0;
    hwc->pp_rect.y = 0;