if (wl_buffer != queue_buffer->exported_wl_buffer) return;
queue = queue_buffer->queue;
- queue_buffer->exported = EINA_FALSE;
- queue_buffer->exported_wl_buffer = NULL;
- wl_list_remove(&queue_buffer->exported_destroy_listener.link);
if ((queue->state == E_HWC_WINDOW_QUEUE_STATE_SET) ||
(queue->state == E_HWC_WINDOW_QUEUE_STATE_SET_WAITING_BUFFER))
e_hwc_window_queue_buffer_release(queue, queue_buffer);
queue_buffer->usable = EINA_FALSE;
+ queue_buffer->exported = EINA_FALSE;
+ queue_buffer->exported_wl_buffer = NULL;
+ wl_list_remove(&queue_buffer->exported_destroy_listener.link);
hwc_window = queue->user;
EHWQINF("DES ts:%p tq:%p wl_buffer:%p",
{
if (queue_buffer->exported)
return EINA_FALSE;
+
+ if ((!queue->is_target) && (queue_buffer->acquired))
+ return EINA_FALSE;
}
return EINA_TRUE;
(user ? user->ec : NULL), queue->hwc, queue, queue_buffer->tsurface, queue->tqueue);
if (!queue->tqueue) return EINA_FALSE;
- if (queue_buffer->reseted) return EINA_TRUE;
- tsq_err = tbm_surface_queue_release(queue->tqueue, queue_buffer->tsurface);
- EINA_SAFETY_ON_FALSE_RETURN_VAL(tsq_err == TBM_SURFACE_QUEUE_ERROR_NONE, EINA_FALSE);
+ if (!queue_buffer->reseted)
+ {
+ tsq_err = tbm_surface_queue_release(queue->tqueue, queue_buffer->tsurface);
+ if (tsq_err != TBM_SURFACE_QUEUE_ERROR_NONE)
+ EHWQERR("fail to tbm_surface_queue_release queue_buffer:%p tsurface:%p",
+ NULL, NULL, queue, queue_buffer, queue_buffer->tsurface);
+ }
+
+ if ((!queue->is_target) &&
+ (queue->state == E_HWC_WINDOW_QUEUE_STATE_UNSET_WAITING))
+ {
+ if (_e_hwc_window_queue_buffers_retrieve_done(queue))
+ _e_hwc_window_queue_unset(queue);
+ }
}
return EINA_TRUE;