Skip to content
This repository has been archived by the owner on Nov 1, 2021. It is now read-only.

Commit

Permalink
buffer: drop wlr_client_buffer.resource
Browse files Browse the repository at this point in the history
  • Loading branch information
emersion committed Jul 9, 2021
1 parent 97c3650 commit 932f500
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 31 deletions.
5 changes: 0 additions & 5 deletions include/wlr/types/wlr_buffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,10 +118,6 @@ bool wlr_buffer_get_shm(struct wlr_buffer *buffer,
struct wlr_client_buffer {
struct wlr_buffer base;

/**
* The buffer resource, if any. Will be NULL if the client destroys it.
*/
struct wl_resource *resource;
/**
* The buffer's texture, if any. A buffer will not have a texture if the
* client destroys the buffer before it has been released.
Expand All @@ -134,7 +130,6 @@ struct wlr_client_buffer {

// private state

struct wl_listener resource_destroy;
struct wl_listener source_destroy;

// If the client buffer has been created from a wl_shm buffer
Expand Down
26 changes: 0 additions & 26 deletions types/wlr_buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,6 @@ static struct wlr_client_buffer *client_buffer_from_buffer(

static void client_buffer_destroy(struct wlr_buffer *buffer) {
struct wlr_client_buffer *client_buffer = client_buffer_from_buffer(buffer);
wl_list_remove(&client_buffer->resource_destroy.link);
wl_list_remove(&client_buffer->source_destroy.link);
wlr_texture_destroy(client_buffer->texture);
free(client_buffer);
Expand All @@ -171,22 +170,6 @@ static const struct wlr_buffer_impl client_buffer_impl = {
.get_dmabuf = client_buffer_get_dmabuf,
};

static void client_buffer_resource_handle_destroy(struct wl_listener *listener,
void *data) {
struct wlr_client_buffer *client_buffer =
wl_container_of(listener, client_buffer, resource_destroy);
wl_list_remove(&client_buffer->resource_destroy.link);
wl_list_init(&client_buffer->resource_destroy.link);
client_buffer->resource = NULL;

// At this point, if the wl_buffer comes from linux-dmabuf or wl_drm, we
// still haven't released it (ie. we'll read it in the future) but the
// client destroyed it. Reading the texture itself should be fine because
// we still hold a reference to the DMA-BUF via the texture. However the
// client could decide to re-use the same DMA-BUF for something else, in
// which case we'll read garbage. We decide to accept this risk.
}

static void client_buffer_handle_source_destroy(struct wl_listener *listener,
void *data) {
struct wlr_client_buffer *client_buffer =
Expand Down Expand Up @@ -251,13 +234,9 @@ struct wlr_client_buffer *wlr_client_buffer_import(
}
wlr_buffer_init(&client_buffer->base, &client_buffer_impl,
texture->width, texture->height);
client_buffer->resource = resource;
client_buffer->source = buffer;
client_buffer->texture = texture;

wl_resource_add_destroy_listener(resource, &client_buffer->resource_destroy);
client_buffer->resource_destroy.notify = client_buffer_resource_handle_destroy;

wl_signal_add(&buffer->events.destroy, &client_buffer->source_destroy);
client_buffer->source_destroy.notify = client_buffer_handle_source_destroy;

Expand Down Expand Up @@ -333,11 +312,6 @@ struct wlr_client_buffer *wlr_client_buffer_apply_damage(
// anymore
wl_buffer_send_release(resource);

wl_list_remove(&client_buffer->resource_destroy.link);
wl_resource_add_destroy_listener(resource, &client_buffer->resource_destroy);
client_buffer->resource_destroy.notify = client_buffer_resource_handle_destroy;

client_buffer->resource = resource;
return client_buffer;
}

Expand Down

0 comments on commit 932f500

Please sign in to comment.