]> git.mdlowis.com Git - proto/labwc.git/commitdiff
cosmic-workspace: destroy manager when wl_display is destroyed
authortokyo4j <hrak1529@gmail.com>
Mon, 11 Nov 2024 22:34:16 +0000 (07:34 +0900)
committerHiroaki Yamamoto <hrak1529@gmail.com>
Tue, 12 Nov 2024 07:21:06 +0000 (16:21 +0900)
src/protocols/cosmic_workspaces/cosmic-workspaces.c

index e8d4cc6a9d550cc12954f6308034bdc01053fd81..83d9ed2fccd5b92495c3a2d9b119d80ab289a864 100644 (file)
@@ -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 */