From d5bf15387ad3b4ee36cae7a3cd9f4a9c28790f2e Mon Sep 17 00:00:00 2001 From: Tom Englund Date: Fri, 3 May 2024 15:42:08 +0200 Subject: internal: fix a few asan reported leaks on exit of hyprland (#5852) * notifications: free cairo images on destruction asan reports a leak on exit if we dont free the image we created in the draw function. add a destructor and free images on exit. * compositor: destroy wlroots types on exit there are a few types not being destroyed on exit and causing a leak on exit in wlroots reported by asan, add those. * cursormgr: ensure we destroy cursor mgr on exit add a destructor and call wlr_xcursor_manager_destroy on the manager on destruction, leak reported by asan. * keybindmgr: free state and keymap add missing keymap_unref on creation, and add a destructor and free the state on exit. leak reported by asan. * skeyboard: add destructor and free state free the state on destruction of keyboard, reported as leak by asan --- src/Compositor.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/Compositor.cpp') diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 3f53f6c3..ea88bec1 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -421,8 +421,22 @@ void CCompositor::cleanup() { g_pWatchdog.reset(); g_pXWaylandManager.reset(); - wl_display_terminate(m_sWLDisplay); + if (m_sWLRCursor) + wlr_cursor_destroy(m_sWLRCursor); + + if (m_sSeat.seat) + wlr_seat_destroy(m_sSeat.seat); + + if (m_sWLRRenderer) + wlr_renderer_destroy(m_sWLRRenderer); + + if (m_sWLRAllocator) + wlr_allocator_destroy(m_sWLRAllocator); + if (m_sWLRBackend) + wlr_backend_destroy(m_sWLRBackend); + + wl_display_terminate(m_sWLDisplay); m_sWLDisplay = nullptr; } -- cgit v1.2.3