diff options
author | Younes Manton <younes.m@gmail.com> | 2008-12-11 23:04:51 -0500 |
---|---|---|
committer | Younes Manton <younes.m@gmail.com> | 2009-01-10 13:52:06 -0500 |
commit | c10db52fcdaf1e21699fa681b701f224b1410990 (patch) | |
tree | a38d77ea5c1d49639cfb5b9aefb241e286c370b0 /src/driclient | |
parent | 87e39466dc49e033c4075f99343856637611b438 (diff) | |
download | external_mesa3d-c10db52fcdaf1e21699fa681b701f224b1410990.zip external_mesa3d-c10db52fcdaf1e21699fa681b701f224b1410990.tar.gz external_mesa3d-c10db52fcdaf1e21699fa681b701f224b1410990.tar.bz2 |
g3dvl: Fix some memory leaks.
Diffstat (limited to 'src/driclient')
-rw-r--r-- | src/driclient/src/driclient.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/driclient/src/driclient.c b/src/driclient/src/driclient.c index 2d75141..dc2189a 100644 --- a/src/driclient/src/driclient.c +++ b/src/driclient/src/driclient.c @@ -111,8 +111,23 @@ free_screen: int driDestroyScreen(dri_screen_t *dri_screen) { + Drawable draw; + dri_drawable_t *dri_draw; + assert(dri_screen); + if (drmHashFirst(dri_screen->drawable_hash, &draw, (void**)&dri_draw)) + { + dri_draw->refcount = 1; + driDestroyDrawable(dri_draw); + + while (drmHashNext(dri_screen->drawable_hash, &draw, (void**)&dri_draw)) + { + dri_draw->refcount = 1; + driDestroyDrawable(dri_draw); + } + } + drmHashDestroy(dri_screen->drawable_hash); drmUnmap(dri_screen->sarea, SAREA_MAX); drmCloseOnce(dri_screen->fd); |