diff --git a/cage.c b/cage.c index 9e6eb13..3da875d 100644 --- a/cage.c +++ b/cage.c @@ -340,7 +340,7 @@ main(int argc, char *argv[]) goto end; } - wlr_scene_attach_output_layout(server.scene, server.output_layout); + server.scene_output_layout = wlr_scene_attach_output_layout(server.scene, server.output_layout); struct wlr_compositor *compositor = wlr_compositor_create(server.wl_display, 6, server.renderer); if (!compositor) { diff --git a/output.c b/output.c index 63b812f..25e2e10 100644 --- a/output.c +++ b/output.c @@ -71,14 +71,18 @@ static inline void output_layout_add_auto(struct cg_output *output) { assert(output->scene_output != NULL); - wlr_output_layout_add_auto(output->server->output_layout, output->wlr_output); + struct wlr_output_layout_output *layout_output = + wlr_output_layout_add_auto(output->server->output_layout, output->wlr_output); + wlr_scene_output_layout_add_output(output->server->scene_output_layout, layout_output, output->scene_output); } static inline void output_layout_add(struct cg_output *output, int32_t x, int32_t y) { assert(output->scene_output != NULL); - wlr_output_layout_add(output->server->output_layout, output->wlr_output, x, y); + struct wlr_output_layout_output *layout_output = + wlr_output_layout_add(output->server->output_layout, output->wlr_output, x, y); + wlr_scene_output_layout_add_output(output->server->scene_output_layout, layout_output, output->scene_output); } static inline void diff --git a/server.h b/server.h index c346f7a..9bf4430 100644 --- a/server.h +++ b/server.h @@ -34,6 +34,8 @@ struct cg_server { enum cg_multi_output_mode output_mode; struct wlr_output_layout *output_layout; + struct wlr_scene_output_layout *scene_output_layout; + struct wlr_scene *scene; /* Includes disabled outputs; depending on the output_mode * some outputs may be disabled. */