X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fdriclient%2Fsrc%2Fdriclient.c;h=dc2189afec3ee7e8dbcf8d8bfba19d75d9c0a1d4;hb=2ab737557258148d52d9b9e983e4b18560b7a460;hp=2d7514166faa4ef4c504be00e985f66d19437e12;hpb=608e14c5b265d331f89959b8e477796ac21c297c;p=mesa.git diff --git a/src/driclient/src/driclient.c b/src/driclient/src/driclient.c index 2d7514166fa..dc2189afec3 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);