aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/wlr/types/wlr_linux_dmabuf_v1.h9
-rw-r--r--types/wlr_linux_dmabuf_v1.c29
2 files changed, 26 insertions, 12 deletions
diff --git a/include/wlr/types/wlr_linux_dmabuf_v1.h b/include/wlr/types/wlr_linux_dmabuf_v1.h
index e56c904a..4ab1a78a 100644
--- a/include/wlr/types/wlr_linux_dmabuf_v1.h
+++ b/include/wlr/types/wlr_linux_dmabuf_v1.h
@@ -76,6 +76,15 @@ struct wlr_linux_dmabuf_v1 {
/**
* Create the linux-dmabuf-unstable-v1 global.
*
+ * Compositors using struct wlr_renderer should use
+ * wlr_linux_dmabuf_v1_create_with_renderer() instead.
+ */
+struct wlr_linux_dmabuf_v1 *wlr_linux_dmabuf_v1_create(struct wl_display *display,
+ uint32_t version, const struct wlr_linux_dmabuf_feedback_v1 *default_feedback);
+
+/**
+ * Create the linux-dmabuf-unstable-v1 global.
+ *
* The default DMA-BUF feedback is initialized from the struct wlr_renderer.
*/
struct wlr_linux_dmabuf_v1 *wlr_linux_dmabuf_v1_create_with_renderer(struct wl_display *display,
diff --git a/types/wlr_linux_dmabuf_v1.c b/types/wlr_linux_dmabuf_v1.c
index 739b2f96..c563d731 100644
--- a/types/wlr_linux_dmabuf_v1.c
+++ b/types/wlr_linux_dmabuf_v1.c
@@ -968,8 +968,8 @@ error_compiled:
return false;
}
-struct wlr_linux_dmabuf_v1 *wlr_linux_dmabuf_v1_create_with_renderer(struct wl_display *display,
- uint32_t version, struct wlr_renderer *renderer) {
+struct wlr_linux_dmabuf_v1 *wlr_linux_dmabuf_v1_create(struct wl_display *display,
+ uint32_t version, const struct wlr_linux_dmabuf_feedback_v1 *default_feedback) {
assert(version <= LINUX_DMABUF_VERSION);
struct wlr_linux_dmabuf_v1 *linux_dmabuf =
@@ -990,16 +990,7 @@ struct wlr_linux_dmabuf_v1 *wlr_linux_dmabuf_v1_create_with_renderer(struct wl_d
goto error_linux_dmabuf;
}
- struct wlr_linux_dmabuf_feedback_v1_tranche tranche = {0};
- if (!feedback_tranche_init_with_renderer(&tranche, renderer)) {
- goto error_global;
- }
- const struct wlr_linux_dmabuf_feedback_v1 feedback = {
- .main_device = tranche.target_device,
- .tranches = &tranche,
- .tranches_len = 1,
- };
- if (!set_default_feedback(linux_dmabuf, &feedback)) {
+ if (!set_default_feedback(linux_dmabuf, default_feedback)) {
goto error_global;
}
@@ -1017,6 +1008,20 @@ error_linux_dmabuf:
return NULL;
}
+struct wlr_linux_dmabuf_v1 *wlr_linux_dmabuf_v1_create_with_renderer(struct wl_display *display,
+ uint32_t version, struct wlr_renderer *renderer) {
+ struct wlr_linux_dmabuf_feedback_v1_tranche tranche = {0};
+ if (!feedback_tranche_init_with_renderer(&tranche, renderer)) {
+ return NULL;
+ }
+ const struct wlr_linux_dmabuf_feedback_v1 feedback = {
+ .main_device = tranche.target_device,
+ .tranches = &tranche,
+ .tranches_len = 1,
+ };
+ return wlr_linux_dmabuf_v1_create(display, version, &feedback);
+}
+
bool wlr_linux_dmabuf_v1_set_surface_feedback(
struct wlr_linux_dmabuf_v1 *linux_dmabuf,
struct wlr_surface *wlr_surface,