From 64e08cc1e3942715c3e2297360dcf333080b7e3f Mon Sep 17 00:00:00 2001 From: Yuxuan Shui Date: Wed, 20 Feb 2019 18:21:40 +0000 Subject: [PATCH] Fix memory leaks when using the new backends Signed-off-by: Yuxuan Shui --- src/backend/xrender.c | 1 + src/compton.c | 8 ++++++++ src/render.c | 7 ------- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/backend/xrender.c b/src/backend/xrender.c index 0bd9ce66..daa3825e 100644 --- a/src/backend/xrender.c +++ b/src/backend/xrender.c @@ -461,6 +461,7 @@ static void deinit(void *backend_data, session_t *ps) { xcb_render_free_picture(ps->c, xd->alpha_pict[i]); xcb_render_free_picture(ps->c, xd->white_pixel); xcb_render_free_picture(ps->c, xd->black_pixel); + free_conv(xd->shadow_kernel); free(xd); } diff --git a/src/compton.c b/src/compton.c index 440f2297..dee812fb 100644 --- a/src/compton.c +++ b/src/compton.c @@ -2934,6 +2934,14 @@ session_destroy(session_t *ps) { deinit_render(ps); } + // Free the damage ring + for (int i = 0; i < ps->ndamage; ++i) { + pixman_region32_fini(&ps->damage_ring[i]); + } + ps->ndamage = 0; + free(ps->damage_ring); + ps->damage_ring = ps->damage = NULL; + // Flush all events x_sync(ps->c); ev_io_stop(ps->loop, &ps->xiow); diff --git a/src/render.c b/src/render.c index 8d28f264..85db6267 100644 --- a/src/render.c +++ b/src/render.c @@ -1211,13 +1211,6 @@ void deinit_render(session_t *ps) { // Free other X resources free_root_tile(ps); - // Free the damage ring - for (int i = 0; i < ps->ndamage; ++i) - pixman_region32_fini(&ps->damage_ring[i]); - ps->ndamage = 0; - free(ps->damage_ring); - ps->damage_ring = ps->damage = NULL; - #ifdef CONFIG_OPENGL free(ps->root_tile_paint.fbcfg); glx_destroy(ps);