diff options
-rw-r--r-- | include/wlr/types/wlr_linux_dmabuf_v1.h | 9 | ||||
-rw-r--r-- | types/wlr_linux_dmabuf_v1.c | 29 |
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, |