buffer: add addon set

This allows wlr_buffer users to extend it with tjeir own state.
This commit is contained in:
Simon Ser 2021-08-11 10:00:07 +02:00
parent 20404ed8bb
commit 93964012e6
2 changed files with 5 additions and 0 deletions

View file

@ -12,6 +12,7 @@
#include <pixman.h> #include <pixman.h>
#include <wayland-server-core.h> #include <wayland-server-core.h>
#include <wlr/render/dmabuf.h> #include <wlr/render/dmabuf.h>
#include <wlr/util/addon.h>
struct wlr_buffer; struct wlr_buffer;
struct wlr_renderer; struct wlr_renderer;
@ -67,6 +68,8 @@ struct wlr_buffer {
struct wl_signal destroy; struct wl_signal destroy;
struct wl_signal release; struct wl_signal release;
} events; } events;
struct wlr_addon_set addons;
}; };
struct wlr_buffer_resource_interface { struct wlr_buffer_resource_interface {

View file

@ -21,6 +21,7 @@ void wlr_buffer_init(struct wlr_buffer *buffer,
buffer->height = height; buffer->height = height;
wl_signal_init(&buffer->events.destroy); wl_signal_init(&buffer->events.destroy);
wl_signal_init(&buffer->events.release); wl_signal_init(&buffer->events.release);
wlr_addon_set_init(&buffer->addons);
} }
static void buffer_consider_destroy(struct wlr_buffer *buffer) { static void buffer_consider_destroy(struct wlr_buffer *buffer) {
@ -31,6 +32,7 @@ static void buffer_consider_destroy(struct wlr_buffer *buffer) {
assert(!buffer->accessing_data_ptr); assert(!buffer->accessing_data_ptr);
wlr_signal_emit_safe(&buffer->events.destroy, NULL); wlr_signal_emit_safe(&buffer->events.destroy, NULL);
wlr_addon_set_finish(&buffer->addons);
buffer->impl->destroy(buffer); buffer->impl->destroy(buffer);
} }