aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2022-03-03 15:38:26 +0100
committerSimon Ser <contact@emersion.fr>2022-03-03 15:39:05 +0100
commit39b68ea47a661b1f7562ce283652de08f222b2be (patch)
treeef00d4ccae8e112de3753c9e5203c34921d09090
parentd0718a9b32dc9d80b35eae269b60a22caa9c268f (diff)
buffer: extract interface to separate header
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3389
-rw-r--r--include/wlr/interfaces/wlr_buffer.h48
-rw-r--r--include/wlr/types/wlr_buffer.h32
-rw-r--r--render/allocator/allocator.c1
-rw-r--r--render/allocator/drm_dumb.c1
-rw-r--r--render/allocator/gbm.c1
-rw-r--r--render/allocator/shm.c1
-rw-r--r--types/wlr_buffer.c1
-rw-r--r--types/wlr_drm.c1
-rw-r--r--types/wlr_linux_dmabuf_v1.c1
9 files changed, 55 insertions, 32 deletions
diff --git a/include/wlr/interfaces/wlr_buffer.h b/include/wlr/interfaces/wlr_buffer.h
new file mode 100644
index 00000000..05ccc1e7
--- /dev/null
+++ b/include/wlr/interfaces/wlr_buffer.h
@@ -0,0 +1,48 @@
+/*
+ * This an unstable interface of wlroots. No guarantees are made regarding the
+ * future consistency of this API.
+ */
+#ifndef WLR_USE_UNSTABLE
+#error "Add -DWLR_USE_UNSTABLE to enable unstable wlroots features"
+#endif
+
+#ifndef WLR_INTERFACES_WLR_BUFFER_H
+#define WLR_INTERFACES_WLR_BUFFER_H
+
+#include <wlr/types/wlr_buffer.h>
+
+struct wlr_buffer_impl {
+ void (*destroy)(struct wlr_buffer *buffer);
+ bool (*get_dmabuf)(struct wlr_buffer *buffer,
+ struct wlr_dmabuf_attributes *attribs);
+ bool (*get_shm)(struct wlr_buffer *buffer,
+ struct wlr_shm_attributes *attribs);
+ bool (*begin_data_ptr_access)(struct wlr_buffer *buffer, uint32_t flags,
+ void **data, uint32_t *format, size_t *stride);
+ void (*end_data_ptr_access)(struct wlr_buffer *buffer);
+};
+
+struct wlr_buffer_resource_interface {
+ const char *name;
+ bool (*is_instance)(struct wl_resource *resource);
+ struct wlr_buffer *(*from_resource)(struct wl_resource *resource);
+};
+
+/**
+ * Initialize a buffer. This function should be called by producers. The
+ * initialized buffer is referenced: once the producer is done with the buffer
+ * they should call wlr_buffer_drop.
+ */
+void wlr_buffer_init(struct wlr_buffer *buffer,
+ const struct wlr_buffer_impl *impl, int width, int height);
+
+/**
+ * Allows the registration of a wl_resource implementation.
+ *
+ * The matching function will be called for the wl_resource when creating a
+ * wlr_buffer from a wl_resource.
+ */
+void wlr_buffer_register_resource_interface(
+ const struct wlr_buffer_resource_interface *iface);
+
+#endif
diff --git a/include/wlr/types/wlr_buffer.h b/include/wlr/types/wlr_buffer.h
index 60dbb5c3..604dc17a 100644
--- a/include/wlr/types/wlr_buffer.h
+++ b/include/wlr/types/wlr_buffer.h
@@ -24,17 +24,6 @@ struct wlr_shm_attributes {
off_t offset;
};
-struct wlr_buffer_impl {
- void (*destroy)(struct wlr_buffer *buffer);
- bool (*get_dmabuf)(struct wlr_buffer *buffer,
- struct wlr_dmabuf_attributes *attribs);
- bool (*get_shm)(struct wlr_buffer *buffer,
- struct wlr_shm_attributes *attribs);
- bool (*begin_data_ptr_access)(struct wlr_buffer *buffer, uint32_t flags,
- void **data, uint32_t *format, size_t *stride);
- void (*end_data_ptr_access)(struct wlr_buffer *buffer);
-};
-
/**
* Buffer capabilities.
*
@@ -72,19 +61,6 @@ struct wlr_buffer {
struct wlr_addon_set addons;
};
-struct wlr_buffer_resource_interface {
- const char *name;
- bool (*is_instance)(struct wl_resource *resource);
- struct wlr_buffer *(*from_resource)(struct wl_resource *resource);
-};
-
-/**
- * Initialize a buffer. This function should be called by producers. The
- * initialized buffer is referenced: once the producer is done with the buffer
- * they should call wlr_buffer_drop.
- */
-void wlr_buffer_init(struct wlr_buffer *buffer,
- const struct wlr_buffer_impl *impl, int width, int height);
/**
* Unreference the buffer. This function should be called by producers when
* they are done with the buffer.
@@ -122,14 +98,6 @@ bool wlr_buffer_get_dmabuf(struct wlr_buffer *buffer,
bool wlr_buffer_get_shm(struct wlr_buffer *buffer,
struct wlr_shm_attributes *attribs);
/**
- * Allows the registration of a wl_resource implementation.
- *
- * The matching function will be called for the wl_resource when creating a
- * wlr_buffer from a wl_resource.
- */
-void wlr_buffer_register_resource_interface(
- const struct wlr_buffer_resource_interface *iface);
-/**
* Transforms a wl_resource into a wlr_buffer and locks it. Once the caller is
* done with the buffer, they must call wlr_buffer_unlock.
*
diff --git a/render/allocator/allocator.c b/render/allocator/allocator.c
index 5108ad04..0597cf25 100644
--- a/render/allocator/allocator.c
+++ b/render/allocator/allocator.c
@@ -3,6 +3,7 @@
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
+#include <wlr/interfaces/wlr_buffer.h>
#include <wlr/render/allocator.h>
#include <wlr/util/log.h>
#include <xf86drm.h>
diff --git a/render/allocator/drm_dumb.c b/render/allocator/drm_dumb.c
index 5b47462b..e2812ecb 100644
--- a/render/allocator/drm_dumb.c
+++ b/render/allocator/drm_dumb.c
@@ -9,6 +9,7 @@
#include <unistd.h>
#include <wlr/backend.h>
#include <wlr/backend/session.h>
+#include <wlr/interfaces/wlr_buffer.h>
#include <wlr/render/allocator.h>
#include <wlr/render/drm_format_set.h>
#include <wlr/util/log.h>
diff --git a/render/allocator/gbm.c b/render/allocator/gbm.c
index 8f73862a..8c670774 100644
--- a/render/allocator/gbm.c
+++ b/render/allocator/gbm.c
@@ -4,6 +4,7 @@
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
+#include <wlr/interfaces/wlr_buffer.h>
#include <wlr/render/allocator.h>
#include <wlr/render/drm_format_set.h>
#include <wlr/util/log.h>
diff --git a/render/allocator/shm.c b/render/allocator/shm.c
index 044d5eb1..9e49a144 100644
--- a/render/allocator/shm.c
+++ b/render/allocator/shm.c
@@ -3,6 +3,7 @@
#include <stdlib.h>
#include <sys/mman.h>
#include <unistd.h>
+#include <wlr/interfaces/wlr_buffer.h>
#include <wlr/render/allocator.h>
#include <wlr/render/drm_format_set.h>
#include <wlr/util/log.h>
diff --git a/types/wlr_buffer.c b/types/wlr_buffer.c
index fa281c68..0e091f56 100644
--- a/types/wlr_buffer.c
+++ b/types/wlr_buffer.c
@@ -1,6 +1,7 @@
#include <assert.h>
#include <drm_fourcc.h>
#include <stdlib.h>
+#include <wlr/interfaces/wlr_buffer.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_buffer.h>
#include <wlr/types/wlr_drm.h>
diff --git a/types/wlr_drm.c b/types/wlr_drm.c
index a02fba84..0d50138c 100644
--- a/types/wlr_drm.c
+++ b/types/wlr_drm.c
@@ -4,6 +4,7 @@
#include <stdlib.h>
#include <unistd.h>
#include <xf86drm.h>
+#include <wlr/interfaces/wlr_buffer.h>
#include <wlr/render/drm_format_set.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_buffer.h>
diff --git a/types/wlr_linux_dmabuf_v1.c b/types/wlr_linux_dmabuf_v1.c
index 5138e469..69aa64b7 100644
--- a/types/wlr_linux_dmabuf_v1.c
+++ b/types/wlr_linux_dmabuf_v1.c
@@ -4,6 +4,7 @@
#include <stdlib.h>
#include <sys/mman.h>
#include <unistd.h>
+#include <wlr/interfaces/wlr_buffer.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_compositor.h>
#include <wlr/types/wlr_linux_dmabuf_v1.h>