Fix memory leaks when using the new backends

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
Yuxuan Shui 2019-02-20 18:21:40 +00:00
parent c2f274ca8a
commit 64e08cc1e3
No known key found for this signature in database
GPG Key ID: 37C999F617EA1A47
3 changed files with 9 additions and 7 deletions

View File

@ -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->alpha_pict[i]);
xcb_render_free_picture(ps->c, xd->white_pixel); xcb_render_free_picture(ps->c, xd->white_pixel);
xcb_render_free_picture(ps->c, xd->black_pixel); xcb_render_free_picture(ps->c, xd->black_pixel);
free_conv(xd->shadow_kernel);
free(xd); free(xd);
} }

View File

@ -2934,6 +2934,14 @@ session_destroy(session_t *ps) {
deinit_render(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 // Flush all events
x_sync(ps->c); x_sync(ps->c);
ev_io_stop(ps->loop, &ps->xiow); ev_io_stop(ps->loop, &ps->xiow);

View File

@ -1211,13 +1211,6 @@ void deinit_render(session_t *ps) {
// Free other X resources // Free other X resources
free_root_tile(ps); 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 #ifdef CONFIG_OPENGL
free(ps->root_tile_paint.fbcfg); free(ps->root_tile_paint.fbcfg);
glx_destroy(ps); glx_destroy(ps);