From d5ae85b5b722821499d5796cf0973ecb6ec125f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Mon, 21 Jul 2008 15:28:50 -0400 Subject: [PATCH] Fix embarrasing GLXPixmap leak. --- glx/glxcmds.c | 4 ---- glx/glxext.c | 5 +++++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/glx/glxcmds.c b/glx/glxcmds.c index 0ca0598fe..083113584 100644 --- a/glx/glxcmds.c +++ b/glx/glxcmds.c @@ -1226,10 +1226,6 @@ static int DoDestroyDrawable(__GLXclientState *cl, XID glxdrawable, int type) } } - if (type == GLX_DRAWABLE_PIXMAP) { - ((PixmapPtr) pGlxDraw->pDraw)->refcnt--; - } - FreeResource(glxdrawable, FALSE); return Success; diff --git a/glx/glxext.c b/glx/glxext.c index 85d8debd4..cd92f6d0a 100644 --- a/glx/glxext.c +++ b/glx/glxext.c @@ -107,6 +107,11 @@ static int ContextGone(__GLXcontext* cx, XID id) */ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid) { + ScreenPtr pScreen = glxPriv->pDraw->pScreen; + + if (glxPriv->type == GLX_DRAWABLE_PIXMAP) + (*pScreen->DestroyPixmap)((PixmapPtr) glxPriv->pDraw); + glxPriv->pDraw = NULL; glxPriv->drawId = 0; __glXUnrefDrawable(glxPriv);