}
}
-static void
-_handle_tbm_surface_queue_trace_notify(tbm_surface_queue_h surface_queue,
- tbm_surface_h tbm_surface, tbm_surface_queue_trace trace, void *data)
-{
- struct wayland_tbm_surface_queue *queue_info = data;
- struct wl_buffer *wl_buffer = NULL;
- struct wayland_tbm_buffer *buffer = NULL;
-
- WL_TBM_RETURN_IF_FAIL(queue_info != NULL);
-
- if (trace != TBM_SURFACE_QUEUE_TRACE_DEQUEUE) return;
-
- pthread_mutex_lock(&queue_info->lock);
-
- if (!queue_info->is_active || !queue_info->active_flush) {
- pthread_mutex_unlock(&queue_info->lock);
- return;
- }
-
- wl_list_for_each(buffer, &queue_info->attach_bufs, link) {
- if (buffer->tbm_surface == tbm_surface)
- wl_buffer = buffer->wl_buffer;
- }
-
- if (wl_buffer)
- wl_tbm_queue_dequeue_buffer(queue_info->wl_tbm_queue, wl_buffer);
-
- pthread_mutex_unlock(&queue_info->lock);
-}
-
tbm_surface_queue_h
wayland_tbm_client_create_surface_queue(struct wayland_tbm_client *tbm_client,
struct wl_surface *surface,
tbm_surface_queue_add_can_dequeue_cb(queue_info->tbm_queue,
_handle_tbm_surface_queue_can_dequeue_notify, queue_info);
- tbm_surface_queue_add_trace_cb(queue_info->tbm_queue,
- _handle_tbm_surface_queue_trace_notify, queue_info);
-
WL_TBM_C_LOG("create wl_surface:%p surface_queue:%p(%dx%d size:%d fmt:%c%c%c%c)",
surface, queue_info->tbm_queue, width, height, queue_size, FOURCC_STR(format));
tbm_surface_queue_add_can_dequeue_cb(queue_info->tbm_queue,
_handle_tbm_surface_queue_can_dequeue_notify, queue_info);
- tbm_surface_queue_add_trace_cb(queue_info->tbm_queue,
- _handle_tbm_surface_queue_trace_notify, queue_info);
-
WL_TBM_C_LOG("create wl_surface:%p surface_queue:%p(%dx%d size:%d fmt:%c%c%c%c)",
surface, queue_info->tbm_queue, width, height, queue_size, FOURCC_STR(format));