]> git.mdlowis.com Git - proto/labwc.git/commitdiff
server: release all the resources on exit
authortokyo4j <hrak1529@gmail.com>
Mon, 11 Nov 2024 22:46:08 +0000 (07:46 +0900)
committerHiroaki Yamamoto <hrak1529@gmail.com>
Tue, 12 Nov 2024 07:21:06 +0000 (16:21 +0900)
Release all the resources including wlr_allocator, wlr_renderer,
wlr_backend and wlr_scene. This makes it a lot easier to detect memory
leaks with ASAN.

On wlroots side, the commit ce615a44 needs to be reverted to detect memory
leaks with EGL renderer.

src/main.c
src/server.c

index 147a9e4af0b51b78bc10478058a49128121e9b26..d96a33be25e930f50c454ba5563bf26411142c1f 100644 (file)
@@ -228,11 +228,12 @@ main(int argc, char *argv[])
 
        session_shutdown(&server);
 
-       server_finish(&server);
-
        menu_finish(&server);
        theme_finish(&theme);
        rcxml_finish();
        font_finish();
+
+       server_finish(&server);
+
        return 0;
 }
index 137f5eea0b380b8669b05c11ad6dad049d1ce76e..697caa5bd1f5a35141cba8d0a420ef5b5902b5a8 100644 (file)
@@ -627,21 +627,20 @@ server_finish(struct server *server)
 {
 #if HAVE_XWAYLAND
        xwayland_server_finish(server);
+#endif
+#if HAVE_LIBSFDO
+       icon_loader_finish(server);
 #endif
        if (sighup_source) {
                wl_event_source_remove(sighup_source);
        }
        wl_display_destroy_clients(server->wl_display);
-
+       wlr_allocator_destroy(server->allocator);
+       wlr_renderer_destroy(server->renderer);
+       wlr_backend_destroy(server->backend);
        seat_finish(server);
-       wl_display_destroy(server->wl_display);
-
-       /* TODO: clean up various scene_tree nodes */
        workspaces_destroy(server);
-
+       wlr_scene_node_destroy(&server->scene->tree.node);
+       wl_display_destroy(server->wl_display);
        free(server->ssd_hover_state);
-
-#if HAVE_LIBSFDO
-       icon_loader_finish(server);
-#endif
 }