linux_dmabuf_v1: convert to try_from

References: wlroots/wlroots#884
This commit is contained in:
eri 2023-10-19 18:17:33 +02:00
parent c46d3da976
commit bfc42e0f62
No known key found for this signature in database
GPG Key ID: B9A747F39941E2A3
2 changed files with 15 additions and 20 deletions

View File

@ -29,17 +29,11 @@ struct wlr_dmabuf_v1_buffer {
struct wl_listener release; struct wl_listener release;
}; };
/**
* Returns true if the given resource was created via the linux-dmabuf
* buffer protocol, false otherwise
*/
bool wlr_dmabuf_v1_resource_is_buffer(struct wl_resource *buffer_resource);
/** /**
* Returns the struct wlr_dmabuf_buffer if the given resource was created * Returns the struct wlr_dmabuf_buffer if the given resource was created
* via the linux-dmabuf buffer protocol. * via the linux-dmabuf buffer protocol or NULL otherwise.
*/ */
struct wlr_dmabuf_v1_buffer *wlr_dmabuf_v1_buffer_from_buffer_resource( struct wlr_dmabuf_v1_buffer *wlr_dmabuf_v1_buffer_try_from_buffer_resource(
struct wl_resource *buffer_resource); struct wl_resource *buffer_resource);
struct wlr_linux_dmabuf_feedback_v1 { struct wlr_linux_dmabuf_feedback_v1 {

View File

@ -72,18 +72,17 @@ static const struct wl_buffer_interface wl_buffer_impl = {
.destroy = buffer_handle_destroy, .destroy = buffer_handle_destroy,
}; };
bool wlr_dmabuf_v1_resource_is_buffer(struct wl_resource *resource) { static bool buffer_resource_is_instance(struct wl_resource *resource) {
if (!wl_resource_instance_of(resource, &wl_buffer_interface, return wl_resource_instance_of(resource, &wl_buffer_interface,
&wl_buffer_impl)) { &wl_buffer_impl);
return false;
}
return wl_resource_get_user_data(resource) != NULL;
} }
struct wlr_dmabuf_v1_buffer *wlr_dmabuf_v1_buffer_from_buffer_resource( struct wlr_dmabuf_v1_buffer *wlr_dmabuf_v1_buffer_try_from_buffer_resource(
struct wl_resource *resource) { struct wl_resource *resource) {
assert(wl_resource_instance_of(resource, &wl_buffer_interface, if (!buffer_resource_is_instance(resource) ||
&wl_buffer_impl)); wl_resource_get_user_data(resource) == NULL) {
return NULL;
}
return wl_resource_get_user_data(resource); return wl_resource_get_user_data(resource);
} }
@ -195,7 +194,8 @@ static void params_add(struct wl_client *client,
static void buffer_handle_resource_destroy(struct wl_resource *buffer_resource) { static void buffer_handle_resource_destroy(struct wl_resource *buffer_resource) {
struct wlr_dmabuf_v1_buffer *buffer = struct wlr_dmabuf_v1_buffer *buffer =
wlr_dmabuf_v1_buffer_from_buffer_resource(buffer_resource); wlr_dmabuf_v1_buffer_try_from_buffer_resource(buffer_resource);
assert(buffer != NULL);
buffer->resource = NULL; buffer->resource = NULL;
wlr_buffer_drop(&buffer->base); wlr_buffer_drop(&buffer->base);
} }
@ -836,13 +836,14 @@ static void linux_dmabuf_bind(struct wl_client *client, void *data,
static struct wlr_buffer *buffer_from_resource(struct wl_resource *resource) { static struct wlr_buffer *buffer_from_resource(struct wl_resource *resource) {
struct wlr_dmabuf_v1_buffer *buffer = struct wlr_dmabuf_v1_buffer *buffer =
wlr_dmabuf_v1_buffer_from_buffer_resource(resource); wlr_dmabuf_v1_buffer_try_from_buffer_resource(resource);
assert(buffer != NULL);
return &buffer->base; return &buffer->base;
} }
static const struct wlr_buffer_resource_interface buffer_resource_interface = { static const struct wlr_buffer_resource_interface buffer_resource_interface = {
.name = "wlr_dmabuf_v1_buffer", .name = "wlr_dmabuf_v1_buffer",
.is_instance = wlr_dmabuf_v1_resource_is_buffer, .is_instance = buffer_resource_is_instance,
.from_resource = buffer_from_resource, .from_resource = buffer_from_resource,
}; };