wayland_tbm_server_client_queue_wait_usable_cb wait_usable_cb;
void *wait_usable_cb_data;
+ wayland_tbm_server_client_queue_destroy_cb destroy_cb;
+ void *destroy_cb_data;
+
struct wl_list link;
};
#ifdef DEBUG_TRACE
WL_TBM_TRACE("destory queue. pid:%d", cqueue->pid);
#endif
+ if (cqueue->destroy_cb)
+ cqueue->destroy_cb(cqueue, cqueue->destroy_cb_data);
+
wl_list_remove(&cqueue->link);
free(cqueue);
return 1;
}
+int
+wayland_tbm_server_client_queue_set_destroy_cb(struct wayland_tbm_client_queue *cqueue,
+ wayland_tbm_server_client_queue_destroy_cb destroy_cb, void *user_data)
+{
+ WL_TBM_RETURN_VAL_IF_FAIL(cqueue != NULL, 0);
+ WL_TBM_RETURN_VAL_IF_FAIL(cqueue->wl_tbm_queue != NULL, 0);
+
+#ifdef DEBUG_TRACE
+ WL_TBM_TRACE(" pid:%d", cqueue->pid);
+#endif
+ cqueue->destroy_cb = destroy_cb;
+ cqueue->destroy_cb_data = user_data;
+
+ return 1;
+}
+
int
wayland_tbm_server_client_queue_send_buffer_usable(struct wayland_tbm_client_queue *cqueue,
struct wl_resource *wl_buffer)
typedef void (*wayland_tbm_server_client_queue_wait_usable_cb) (struct wayland_tbm_client_queue *cqueue,
void *data);
+typedef void (*wayland_tbm_server_client_queue_destroy_cb) (struct wayland_tbm_client_queue *cqueue,
+ void *data);
+
struct wayland_tbm_server *
wayland_tbm_server_init(struct wl_display *display,
const char *device_name,
wayland_tbm_server_client_queue_set_wait_usable_cb(struct wayland_tbm_client_queue *cqueue,
wayland_tbm_server_client_queue_wait_usable_cb wait_usable_cb, void *user_data);
+int
+wayland_tbm_server_client_queue_set_destroy_cb(struct wayland_tbm_client_queue *cqueue,
+ wayland_tbm_server_client_queue_destroy_cb destroy_cb, void *user_data);
+
#ifdef __cplusplus
}
#endif