From d82d8117f7b0387f2de306337c6f7e5db09a87f9 Mon Sep 17 00:00:00 2001 From: yuanye Date: Tue, 15 Nov 2022 09:38:15 +0800 Subject: [PATCH] src/output.c: Release layer tree when releasing output Split off from PR #622 and slightly modified by @Consolatis --- src/output.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/output.c b/src/output.c index efbdcdd8..e8030718 100644 --- a/src/output.c +++ b/src/output.c @@ -44,6 +44,13 @@ output_destroy_notify(struct wl_listener *listener, void *data) wl_list_remove(&output->frame.link); wl_list_remove(&output->destroy.link); + int nr_layers = sizeof(output->layer_tree) / sizeof(output->layer_tree[0]); + for (int i = 0; i < nr_layers; i++) { + wlr_scene_node_destroy(&output->layer_tree[i]->node); + } + wlr_scene_node_destroy(&output->layer_popup_tree->node); + wlr_scene_node_destroy(&output->osd_tree->node); + struct view *view; struct server *server = output->server; wl_list_for_each(view, &server->views, link) { @@ -238,7 +245,7 @@ output_update_for_layout_change(struct server *server) /* * "Move" each wlr_output_cursor (in per-output coordinates) to - * align with the seat cursor. Set a default cursor image so + * align with the seat cursor. Set a default cursor image so * that the cursor isn't invisible on new outputs. * * TODO: remember the most recent cursor image (see cursor.c)