mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-22 12:55:58 +01:00
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.
This commit is contained in:
parent
9c04fd2496
commit
f103dc74d8
2 changed files with 26 additions and 12 deletions
|
@ -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…
Reference in a new issue