diff --git a/glx/glxext.c b/glx/glxext.c index c882372..fec45b7 100644 --- a/glx/glxext.c +++ b/glx/glxext.c @@ -119,6 +119,7 @@ static int ContextGone(__GLXcontext* cx, XID id) static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid) { ScreenPtr pScreen = glxPriv->pDraw->pScreen; + int refcount; switch (glxPriv->type) { case GLX_DRAWABLE_PIXMAP: @@ -127,9 +128,12 @@ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid) break; } - glxPriv->pDraw = NULL; - glxPriv->drawId = 0; + refcount = glxPriv->refCount; __glXUnrefDrawable(glxPriv); + if (refcount > 1) { + glxPriv->pDraw = NULL; + glxPriv->drawId = 0; + } return True; }