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);