From 5655223b9e52fa007846adba93728fac59dafdd2 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Tue, 19 Nov 2019 13:42:05 +0900 Subject: [PATCH] e_hwc_windows: set hybrid/none hwc mode if ui window ins't exist Change-Id: I67af4285b1c3b9efef97ebb7f1f8b547f045907b --- src/bin/e_hwc_windows.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/bin/e_hwc_windows.c b/src/bin/e_hwc_windows.c index cbe9003b7d..c24d6c2a27 100644 --- a/src/bin/e_hwc_windows.c +++ b/src/bin/e_hwc_windows.c @@ -120,7 +120,7 @@ _e_hwc_windows_update_fps(E_Hwc *hwc) } static E_Hwc_Mode -_e_hwc_windows_hwc_mode_update(E_Hwc *hwc, int num_client, int num_device, int num_video) +_e_hwc_windows_hwc_mode_update(E_Hwc *hwc, int num_client, int num_device, int num_cursor, int num_video) { E_Hwc_Mode hwc_mode = E_HWC_MODE_NONE; int num_visible = hwc->num_visible_windows; @@ -133,13 +133,23 @@ _e_hwc_windows_hwc_mode_update(E_Hwc *hwc, int num_client, int num_device, int n return hwc_mode; } - if (!num_visible || (!num_device && !num_video)) + /* check ui windows */ + if (!num_visible) hwc_mode = E_HWC_MODE_NONE; - else if (!num_client && (num_device || num_video)) + else if (!num_device) + hwc_mode = E_HWC_MODE_NONE; + else if ((!num_client) && (num_device)) hwc_mode = E_HWC_MODE_FULL; else hwc_mode = E_HWC_MODE_HYBRID; + /* check video and cursor windows */ + if ((num_video) || (num_cursor)) + { + if (hwc_mode == E_HWC_MODE_NONE) + hwc_mode = E_HWC_MODE_HYBRID; + } + if (hwc->hwc_mode != hwc_mode) { if (hwc_mode == E_HWC_MODE_HYBRID || hwc_mode == E_HWC_MODE_NONE) @@ -2283,7 +2293,7 @@ _e_hwc_windows_evaluate(E_Hwc *hwc) E_Hwc_Window *hwc_window = NULL; const Eina_List *l; uint32_t num_changes; - int num_client = 0, num_device = 0, num_video = 0; + int num_client = 0, num_device = 0, num_video = 0, num_cursor = 0; Eina_Bool ret = EINA_FALSE; /* validate the visible hwc_windows' states*/ @@ -2316,11 +2326,12 @@ _e_hwc_windows_evaluate(E_Hwc *hwc) if (hwc_window->state == E_HWC_WINDOW_STATE_CLIENT) num_client++; if (hwc_window->state == E_HWC_WINDOW_STATE_DEVICE) num_device++; + if (hwc_window->state == E_HWC_WINDOW_STATE_CURSOR) num_cursor++; if (hwc_window->state == E_HWC_WINDOW_STATE_VIDEO) num_video++; } /* update the E_HWC_MODE */ - hwc_mode = _e_hwc_windows_hwc_mode_update(hwc, num_client, num_device, num_video); + hwc_mode = _e_hwc_windows_hwc_mode_update(hwc, num_client, num_device, num_cursor ,num_video); /* set the state of the target_window */ if (hwc_mode == E_HWC_MODE_NONE) -- 2.34.1