From 7d10db6531efd5f5339c5fd72de33d8ad13e5ab9 Mon Sep 17 00:00:00 2001 From: Yuxuan Shui Date: Sat, 2 Feb 2019 19:54:02 +0000 Subject: [PATCH] Move deallocation of damage_ring to deinit_render Fix a memory leak when compton is reset. Signed-off-by: Yuxuan Shui --- src/compton.c | 4 ---- src/render.c | 7 +++++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/compton.c b/src/compton.c index e8346cd..42c957f 100644 --- a/src/compton.c +++ b/src/compton.c @@ -3150,10 +3150,6 @@ session_destroy(session_t *ps) { free_paint(ps, &ps->tgt_buffer); pixman_region32_fini(&ps->screen_reg); - for (int i = 0; i < ps->ndamage; ++i) - pixman_region32_fini(&ps->damage_ring[i]); - ps->ndamage = 0; - ps->damage_ring = ps->damage = NULL; free(ps->expose_rects); free(ps->o.config_file); diff --git a/src/render.c b/src/render.c index 8fba824..b604edb 100644 --- a/src/render.c +++ b/src/render.c @@ -1205,6 +1205,13 @@ 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 glx_destroy(ps); #endif