diff --git a/glx/glxcmds.c b/glx/glxcmds.c index a451d2b43..fb236b65e 100644 --- a/glx/glxcmds.c +++ b/glx/glxcmds.c @@ -434,9 +434,6 @@ static void StopUsingContext(__GLXcontext * glxc) { if (glxc) { - if (glxc == lastGLContext) { - lastGLContext = NULL; - } glxc->currentClient = NULL; if (!glxc->idExists) { FreeResourceByType(glxc->id, __glXContextRes, FALSE); @@ -447,7 +444,6 @@ StopUsingContext(__GLXcontext * glxc) static void StartUsingContext(__GLXclientState * cl, __GLXcontext * glxc) { - lastGLContext = glxc; glxc->currentClient = cl->client; } @@ -639,7 +635,9 @@ DoMakeCurrent(__GLXclientState * cl, glxc->readPriv = readPriv; /* make the context current */ + lastGLContext = glxc; if (!(*glxc->makeCurrent) (glxc)) { + lastGLContext = NULL; glxc->drawPriv = NULL; glxc->readPriv = NULL; return __glXError(GLXBadContext); diff --git a/glx/glxext.c b/glx/glxext.c index 85fd219df..98557670a 100644 --- a/glx/glxext.c +++ b/glx/glxext.c @@ -444,14 +444,15 @@ __glXForceCurrent(__GLXclientState * cl, GLXContextTag tag, int *error) /* Make this context the current one for the GL. */ if (!cx->isDirect) { + lastGLContext = cx; if (!(*cx->makeCurrent) (cx)) { /* Bind failed, and set the error code. Bummer */ + lastGLContext = NULL; cl->client->errorValue = cx->id; *error = __glXError(GLXBadContextState); return 0; } } - lastGLContext = cx; return cx; }