From fc66caf5d87d0ca81f3899f60aa85f91f2eda9c6 Mon Sep 17 00:00:00 2001 From: tokyo4j Date: Tue, 12 Nov 2024 07:34:16 +0900 Subject: [PATCH] cosmic-workspace: destroy manager when wl_display is destroyed --- src/protocols/cosmic_workspaces/cosmic-workspaces.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/protocols/cosmic_workspaces/cosmic-workspaces.c b/src/protocols/cosmic_workspaces/cosmic-workspaces.c index e8d4cc6a..83d9ed2f 100644 --- a/src/protocols/cosmic_workspaces/cosmic-workspaces.c +++ b/src/protocols/cosmic_workspaces/cosmic-workspaces.c @@ -395,8 +395,18 @@ manager_handle_display_destroy(struct wl_listener *listener, void *data) struct lab_cosmic_workspace_manager *manager = wl_container_of(listener, manager, on.display_destroy); + struct lab_cosmic_workspace_group *group, *tmp; + wl_list_for_each_safe(group, tmp, &manager->groups, link) { + lab_cosmic_workspace_group_destroy(group); + } + + if (manager->idle_source) { + wl_event_source_remove(manager->idle_source); + } + wl_list_remove(&manager->on.display_destroy.link); - manager->event_loop = NULL; + wl_global_destroy(manager->global); + free(manager); } /* Manager internal helpers */