e_hwc_windows: set client type to all windows in e_comp_hwc_end 86/230686/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Fri, 3 Apr 2020 10:31:26 +0000 (19:31 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Mon, 13 Apr 2020 10:50:01 +0000 (19:50 +0900)
Change-Id: I2dfcb417c50948a571e08ca18201ac93908592c5

src/bin/e_comp.c
src/bin/e_hwc_window.c
src/bin/e_hwc_windows.c
src/bin/e_hwc_windows.h

index 29ee0e6797a8a710b6f96be63d431daf7bc52c70..2b54c37f9061b0429296691b064cfbcd2af82806 100644 (file)
@@ -1381,6 +1381,8 @@ e_comp_hwc_end(const char *location)
 
    if (hwc->hwc_policy == E_HWC_POLICY_PLANES)
      e_hwc_planes_end(output->hwc, location);
+   else if (hwc->hwc_policy == E_HWC_POLICY_WINDOWS)
+     e_hwc_windows_client_type_override(output->hwc);
 }
 
 EINTERN void
index afa19be089f8028cc67b5b2bdacaac55ec0f6f19..50f1812826d3322538386e52bb1e2a7330ab5e60 100644 (file)
@@ -2113,7 +2113,13 @@ e_hwc_window_client_type_override(E_Hwc_Window *hwc_window)
 {
    EINA_SAFETY_ON_NULL_RETURN(hwc_window);
 
-   if (hwc_window->state == E_HWC_WINDOW_STATE_CLIENT) return;
+   if (hwc_window->is_target) return;
+   if (hwc_window->is_video) return;
+
+   if ((hwc_window->state == E_HWC_WINDOW_STATE_CLIENT) ||
+       (hwc_window->state == E_HWC_WINDOW_STATE_VIDEO) ||
+       (hwc_window->state == E_HWC_WINDOW_STATE_NONE))
+     return;
 
    e_hwc_window_device_state_available_update(hwc_window);
    e_hwc_window_state_set(hwc_window, E_HWC_WINDOW_STATE_CLIENT, EINA_TRUE);
index cd096e81fe54714adb3fa725b4a7b2516e7f4d8a..d5284d4204a58ee50ba627783e5d3c38c7cd5a68 100644 (file)
@@ -3959,3 +3959,19 @@ e_hwc_windows_present_sync(E_Hwc *hwc)
 
    return EINA_TRUE;
 }
+
+EINTERN void
+e_hwc_windows_client_type_override(E_Hwc *hwc)
+{
+   E_Hwc_Window *hwc_window;
+   Eina_List *l;
+
+   EINA_SAFETY_ON_NULL_RETURN(hwc);
+
+   EINA_LIST_FOREACH(hwc->hwc_windows, l, hwc_window)
+     {
+        if (hwc_window->is_target) continue;
+
+        e_hwc_window_client_type_override(hwc_window);
+     }
+}
index 6e14fa73df4f542090c7db20d5793d63cc0ee9fc..d54151f6d1118b95bd3b86ec834e19cfe4c92f6b 100644 (file)
@@ -44,5 +44,7 @@ EINTERN Eina_Bool            e_hwc_windows_presentation_update(E_Hwc *hwc, E_Cli
 
 EINTERN Eina_Bool            e_hwc_windows_present_sync(E_Hwc *hwc);
 
+EINTERN void                 e_hwc_windows_client_type_override(E_Hwc *hwc);
+
 #endif
 #endif