linux-dmabuf-v1: introduce wlr_linux_dmabuf_v1_create()

Some compositors may want to use the linux-dmabuf-v1 implementation
with a completely custom renderer. Add a function to create the
global with a default feedback.
Simon Ser 2 years ago
parent 9c04fd2496
commit f103dc74d8

@ -73,6 +73,15 @@ struct wlr_linux_dmabuf_v1 {
struct wl_listener display_destroy; struct wl_listener display_destroy;
}; };
/**
* 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. * Create the linux-dmabuf-unstable-v1 global.
* *

@ -968,8 +968,8 @@ error_compiled:
return false; return false;
} }
struct wlr_linux_dmabuf_v1 *wlr_linux_dmabuf_v1_create_with_renderer(struct wl_display *display, struct wlr_linux_dmabuf_v1 *wlr_linux_dmabuf_v1_create(struct wl_display *display,
uint32_t version, struct wlr_renderer *renderer) { uint32_t version, const struct wlr_linux_dmabuf_feedback_v1 *default_feedback) {
assert(version <= LINUX_DMABUF_VERSION); assert(version <= LINUX_DMABUF_VERSION);
struct wlr_linux_dmabuf_v1 *linux_dmabuf = 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; goto error_linux_dmabuf;
} }
struct wlr_linux_dmabuf_feedback_v1_tranche tranche = {0}; if (!set_default_feedback(linux_dmabuf, default_feedback)) {
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)) {
goto error_global; goto error_global;
} }
@ -1017,6 +1008,20 @@ error_linux_dmabuf:
return NULL; 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( bool wlr_linux_dmabuf_v1_set_surface_feedback(
struct wlr_linux_dmabuf_v1 *linux_dmabuf, struct wlr_linux_dmabuf_v1 *linux_dmabuf,
struct wlr_surface *wlr_surface, struct wlr_surface *wlr_surface,

Loading…
Cancel
Save