queue_buffer->tsurface, queue->tqueue,
queue_buffer->exported_wl_buffer);
+ if (hwc_window)
+ e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_BUFFER);
+
if (queue_buffer->reseted)
{
queue->buffers = eina_list_remove(queue->buffers, queue_buffer);
if (queue_buffer->copying)
return EINA_FALSE;
- if ((!queue->is_target) && (queue_buffer->acquired))
+ if ((queue_buffer->internal_enqueued) && (queue_buffer->acquired))
return EINA_FALSE;
}
hwc_window = ec->hwc_window;
if (!hwc_window) return;
- if ((ec->exp_iconify.buffer_flush) && (e_policy_visibility_client_is_iconic(ec)))
+ if ((!e_view_client_visible_get(e_client_view_get(ec))) &&
+ (ec->exp_iconify.buffer_flush) &&
+ (e_policy_visibility_client_is_iconic(ec)))
return;
_e_hwc_window_queue_copy_thread_check_and_run(hwc_window);
if (!queue->tqueue) return EINA_FALSE;
queue_buffer->dequeued = EINA_FALSE;
+ queue_buffer->internal_enqueued = EINA_TRUE;
user = queue->user;
EHWQTRACE("ENQ ts:%p tq:%p",
queue_buffer->released = EINA_TRUE;
queue_buffer->dequeued = EINA_FALSE;
queue_buffer->acquired = EINA_FALSE;
+ queue_buffer->internal_enqueued = EINA_FALSE;
if (queue->type == E_HWC_WINDOW_QUEUE_TYPE_GBM_SURFACE)
{
NULL, NULL, queue, queue_buffer, queue_buffer->tsurface);
}
- if ((!queue->is_target) &&
- (queue->state == E_HWC_WINDOW_QUEUE_STATE_UNSET_WAITING))
+ if (queue->state == E_HWC_WINDOW_QUEUE_STATE_UNSET_WAITING)
{
if (_e_hwc_window_queue_buffers_retrieve_done(queue))
_e_hwc_window_queue_unset(queue);
EHWQINF("Wait detach ts:%p tq:%p", NULL, NULL, ref->buffer->queue,
ref->buffer->tsurface, ref->buffer->queue->tqueue);
}
+ else if ((ref->buffer->queue->state == E_HWC_WINDOW_QUEUE_STATE_UNSET_WAITING) &&
+ (ref->buffer->copying))
+ {
+ ref->buffer->acquired = EINA_FALSE;
+ ref->buffer->dequeued = EINA_TRUE;
+
+ EHWQINF("Wait copying ts:%p tq:%p", NULL, NULL, ref->buffer->queue,
+ ref->buffer->tsurface, ref->buffer->queue->tqueue);
+ }
else
{
e_hwc_window_queue_buffer_release(ref->buffer->queue, ref->buffer);
{
snprintf(info_str, sizeof(info_str),
" └─ [%2d] Queue_Buffer(%8p) tsurface(%8p) exported_wl_buffer(%u)"
- " exported(%d) usable(%d) released(%d) acquired(%d) dequeued(%d) copying(%d)",
+ " exported(%d) usable(%d) released(%d) acquired(%d) dequeued(%d) copying(%d) internal_enqueued(%d)",
++buf_idx, queue_buffer, queue_buffer->tsurface,
queue_buffer->exported_wl_buffer ? wl_resource_get_id(queue_buffer->exported_wl_buffer) : 0,
queue_buffer->exported, queue_buffer->usable, queue_buffer->released,
- queue_buffer->acquired, queue_buffer->dequeued, queue_buffer->copying);
+ queue_buffer->acquired, queue_buffer->dequeued, queue_buffer->copying, queue_buffer->internal_enqueued);
eldbus_message_iter_basic_append(line_array, 's', info_str);
}
eldbus_message_iter_basic_append(line_array, 's', "");