wlr_scene: Add support for custom swapchains

master
Alexander Orzechowski 9 months ago
parent 239354d644
commit 8da93e5936

@ -468,6 +468,13 @@ void wlr_scene_output_set_position(struct wlr_scene_output *scene_output,
struct wlr_scene_output_state_options { struct wlr_scene_output_state_options {
struct wlr_scene_timer *timer; struct wlr_scene_timer *timer;
/**
* Allows use of a custom swapchain. This can be useful when trying out an
* output configuration. The swapchain dimensions must match the respective
* wlr_output_state or output size if not specified.
*/
struct wlr_swapchain *swapchain;
}; };
/** /**

@ -1803,11 +1803,16 @@ bool wlr_scene_output_build_state(struct wlr_scene_output *scene_output,
wlr_damage_ring_set_bounds(&scene_output->damage_ring, wlr_damage_ring_set_bounds(&scene_output->damage_ring,
render_data.trans_width, render_data.trans_height); render_data.trans_width, render_data.trans_height);
struct wlr_swapchain *swapchain = options->swapchain;
if (!swapchain) {
if (!wlr_output_configure_primary_swapchain(output, state, &output->swapchain)) { if (!wlr_output_configure_primary_swapchain(output, state, &output->swapchain)) {
return false; return false;
} }
struct wlr_buffer *buffer = wlr_swapchain_acquire(output->swapchain, NULL); swapchain = output->swapchain;
}
struct wlr_buffer *buffer = wlr_swapchain_acquire(swapchain, NULL);
if (buffer == NULL) { if (buffer == NULL) {
return false; return false;
} }

Loading…
Cancel
Save