From f952d0d771de6d9b8ecc3cbbe3624203723bbb25 Mon Sep 17 00:00:00 2001 From: marha Date: Thu, 30 Sep 2010 09:49:59 +0000 Subject: xserver libX11 xkeyboard-config git update 30/9/2010 --- xorg-server/glx/glxext.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'xorg-server/glx') diff --git a/xorg-server/glx/glxext.c b/xorg-server/glx/glxext.c index 9c99a5879..44e96bd8b 100644 --- a/xorg-server/glx/glxext.c +++ b/xorg-server/glx/glxext.c @@ -124,7 +124,7 @@ static int glxBlockClients; */ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid) { - __GLXcontext *c; + __GLXcontext *c, *next; /* If this drawable was created using glx 1.3 drawable * constructors, we added it as a glx drawable resource under both @@ -137,7 +137,8 @@ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid) FreeResourceByType(glxPriv->drawId, __glXDrawableRes, TRUE); } - for (c = glxAllContexts; c; c = c->next) { + for (c = glxAllContexts; c; c = next) { + next = c->next; if (c->isCurrent && (c->drawPriv == glxPriv || c->readPriv == glxPriv)) { int i; @@ -160,15 +161,13 @@ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid) } } } - - if (!c->idExists) { - __glXFreeContext(c); - } } if (c->drawPriv == glxPriv) c->drawPriv = NULL; if (c->readPriv == glxPriv) c->readPriv = NULL; + if (!c->idExists && !c->isCurrent) + __glXFreeContext(c); } glxPriv->destroy(glxPriv); -- cgit v1.2.3