queue = hwc_window->queue;
state = e_hwc_window_accepted_state_get(hwc_window);
- if ((state == E_HWC_WINDOW_STATE_DEVICE) &&
- (queue->state == E_HWC_WINDOW_QUEUE_STATE_SET_WAITING_BUFFER))
- _e_hwc_window_queue_set(queue);
+ if ((state == E_HWC_WINDOW_STATE_DEVICE))
+ {
+ if(queue->state == E_HWC_WINDOW_QUEUE_STATE_SET_WAITING_BUFFER)
+ _e_hwc_window_queue_set(queue);
+ }
+ else if ((state == E_HWC_WINDOW_STATE_CLIENT) || (state == E_HWC_WINDOW_STATE_NONE))
+ {
+ /* if buffer of queue is commited, hwc_window should be set by Device Type */
+ if (!hwc_window->buffer.tsurface) return;
+
+ if (e_hwc_window_queue_buffer_find(queue, hwc_window->buffer.tsurface))
+ e_hwc_window_constraints_reset(hwc_window);
+ }
}
static void