summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--glx/glxcmds.c4
-rw-r--r--glx/glxext.c5
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);