ds_buffer_register_resource_interface(
const struct ds_buffer_resource_interface *iface);
+struct wl_resource *
+ds_buffer_get_resource(struct ds_buffer *buffer);
+
#ifdef __cplusplus
}
#endif
bool (*begin_data_ptr_access)(struct ds_buffer *buffer, uint32_t flags,
void **data, uint32_t *format, size_t *stride);
void (*end_data_ptr_access)(struct ds_buffer *buffer);
+ struct wl_resource *(*get_resource)(struct ds_buffer *buffer);
};
struct ds_buffer
*iface_ptr = iface;
}
+WL_EXPORT struct wl_resource *
+ds_buffer_get_resource(struct ds_buffer *buffer)
+{
+ if (!buffer->iface->get_resource)
+ return NULL;
+
+ return buffer->iface->get_resource(buffer);
+}
+
static void
buffer_consider_destroy(struct ds_buffer *buffer)
{
wl_shm_buffer_end_access(buffer->shm_buffer);
}
+static struct wl_resource *
+shm_client_buffer_get_resource(struct ds_buffer *ds_buffer)
+{
+ struct ds_shm_client_buffer *buffer;
+
+ buffer = shm_client_buffer_from_buffer(ds_buffer);
+
+ return buffer->resource;
+}
+
+struct ds_shm_client_buffer *buffer;
static const struct ds_buffer_interface shm_client_buffer_iface =
{
.destroy = shm_client_buffer_destroy,
.begin_data_ptr_access = shm_client_buffer_begin_data_ptr_access,
.end_data_ptr_access = shm_client_buffer_end_data_ptr_access,
+ .get_resource = shm_client_buffer_get_resource,
};
static void