wayland_tbm_server_surface_destroy_cb destroy_cb,
void *user_data)
{
- struct wayland_tbm_buffer *tbm_buffer;
- struct wl_resource *wl_tbm;
- char debug_id[64] = {0, };
-
- WL_TBM_RETURN_VAL_IF_FAIL(cqueue != NULL, NULL);
- WL_TBM_RETURN_VAL_IF_FAIL(cqueue->wl_tbm_queue != NULL, NULL);
- WL_TBM_RETURN_VAL_IF_FAIL(cqueue->wl_tbm != NULL, NULL);
- WL_TBM_RETURN_VAL_IF_FAIL(surface != NULL, NULL);
-
- wl_tbm = cqueue->wl_tbm;
-
- tbm_surface_internal_ref(surface);
- tbm_buffer = _wayland_tbm_server_tbm_buffer_create(wl_tbm, 0, surface,
- 0, 0);
- if (tbm_buffer == NULL) {
- tbm_surface_internal_unref(surface);
- return NULL;
- }
-
- tbm_buffer->destroy_cb = destroy_cb;
- tbm_buffer->user_data = user_data;
- tbm_buffer->flags = flags;
-
- if (!_wayland_tbm_server_export_surface(cqueue->wl_tbm,
- tbm_buffer->wl_buffer,
- surface)) {
- WL_TBM_S_LOG("Failed to send the surface to the wl_tbm_queue");
- wl_resource_destroy(tbm_buffer->wl_buffer);
- tbm_surface_internal_unref(surface);
- return NULL;
- }
-
- wl_tbm_queue_send_buffer_attached(cqueue->wl_tbm_queue,
- tbm_buffer->wl_buffer, flags);
- snprintf(debug_id, sizeof(debug_id), "%u",
- (unsigned int)wl_resource_get_id(tbm_buffer->wl_buffer));
- tbm_surface_internal_set_debug_data(surface, "id", debug_id);
-
- return tbm_buffer->wl_buffer;
+ return wayland_tbm_server_client_queue_export_buffer2(cqueue, surface, flags,
+ (wayland_tbm_server_surface_detach_cb)NULL, destroy_cb, user_data);
}
void