From eaf11face68ee1f1bcc7ce1498304ca8c108c8ba Mon Sep 17 00:00:00 2001 From: tokyo4j Date: Tue, 12 Nov 2024 07:46:08 +0900 Subject: [PATCH] server: release all the resources on exit 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 | 5 +++-- src/server.c | 17 ++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main.c b/src/main.c index 147a9e4a..d96a33be 100644 --- a/src/main.c +++ b/src/main.c @@ -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; } diff --git a/src/server.c b/src/server.c index 137f5eea..697caa5b 100644 --- a/src/server.c +++ b/src/server.c @@ -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 }