From: Changyeon Lee Date: Fri, 3 Apr 2020 10:31:26 +0000 (+0900) Subject: e_hwc_windows: set client type to all windows in e_comp_hwc_end X-Git-Tag: submit/tizen/20200415.025022~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d6b6240421dc23ff629d92ead859fe97a694083a;p=platform%2Fupstream%2Fenlightenment.git e_hwc_windows: set client type to all windows in e_comp_hwc_end Change-Id: I2dfcb417c50948a571e08ca18201ac93908592c5 --- diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index 29ee0e6797..2b54c37f90 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -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 diff --git a/src/bin/e_hwc_window.c b/src/bin/e_hwc_window.c index afa19be089..50f1812826 100644 --- a/src/bin/e_hwc_window.c +++ b/src/bin/e_hwc_window.c @@ -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); diff --git a/src/bin/e_hwc_windows.c b/src/bin/e_hwc_windows.c index cd096e81fe..d5284d4204 100644 --- a/src/bin/e_hwc_windows.c +++ b/src/bin/e_hwc_windows.c @@ -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); + } +} diff --git a/src/bin/e_hwc_windows.h b/src/bin/e_hwc_windows.h index 6e14fa73df..d54151f6d1 100644 --- a/src/bin/e_hwc_windows.h +++ b/src/bin/e_hwc_windows.h @@ -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