glx: Move GLX MakeCurrent lastGLContext updates next to makeCurrent().
We want to make sure that lastGLContext is set correctly during makeCurrent, because we may have recursive GL context changes in the DRI2 interfaces due to glamor. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
parent
abf1202706
commit
789509ef53
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue