From ebd33bf53524f3471a5671d77ba00afa12dea9ee Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Wed, 11 Dec 2019 14:39:05 +0900 Subject: [PATCH] e_hwc_windows_queue: unset queue if target need to use it if queue state is waiting_buffer and user of queue has queue buffer, queue of target must be used by target Change-Id: I67d1eafd7b70afa715a5ecfa734895b13600b597 --- src/bin/e_hwc_window_queue.c | 13 ++++++++++++- src/bin/e_hwc_windows.c | 7 ++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/bin/e_hwc_window_queue.c b/src/bin/e_hwc_window_queue.c index 953fb00b67..b9261a3eff 100644 --- a/src/bin/e_hwc_window_queue.c +++ b/src/bin/e_hwc_window_queue.c @@ -1084,7 +1084,18 @@ _e_hwc_window_queue_cb_accepted_state_set(void *data, E_Hwc_Window *hwc_window) { if (e_hwc_window_is_target(hwc_window)) { - if (queue->state != E_HWC_WINDOW_QUEUE_STATE_SET) return; + if (queue->state == E_HWC_WINDOW_QUEUE_STATE_SET_WAITING_BUFFER) + { + if (!queue->user) return; + if (!queue->user->buffer.tsurface) return; + if (!e_hwc_window_queue_buffer_find(queue, queue->user->buffer.tsurface)) + return; + } + else + { + if (queue->state != E_HWC_WINDOW_QUEUE_STATE_SET) + return; + } EINA_LIST_FOREACH_SAFE(queue->user_pending_set, l, ll, tmp_hwc_window) e_hwc_window_constraints_reset(tmp_hwc_window); diff --git a/src/bin/e_hwc_windows.c b/src/bin/e_hwc_windows.c index d32a62f274..93b8092155 100644 --- a/src/bin/e_hwc_windows.c +++ b/src/bin/e_hwc_windows.c @@ -2452,11 +2452,8 @@ _e_hwc_windows_target_state_set(E_Hwc_Window_Target *target_hwc_window, E_Hwc_Wi { E_Hwc_Window *target_window = (E_Hwc_Window *)target_hwc_window; - if (target_window->state != state) - e_hwc_window_state_set(target_window, state, EINA_FALSE); - - if (target_window->accepted_state != state) - e_hwc_window_accepted_state_set(target_window, state); + e_hwc_window_state_set(target_window, state, EINA_FALSE); + e_hwc_window_accepted_state_set(target_window, state); } /* evaluate the hwc_windows */ -- 2.34.1