summaryrefslogtreecommitdiff
path: root/glx
diff options
context:
space:
mode:
authorAdam Jackson <ajax@redhat.com>2019-08-16 14:56:19 -0400
committerAdam Jackson <ajax@nwnk.net>2019-08-20 18:06:52 +0000
commit95dcc81cb122e5a4c5b38e84ef46eb872b2e1431 (patch)
treef4be714a7efb2361d1f1ef04fc84b04420fd6db6 /glx
parentaed62f8fbea3f618f97ee0105b2d430c8cddf8f5 (diff)
downloadxserver-95dcc81cb122e5a4c5b38e84ef46eb872b2e1431.tar.gz
glx: Fix previous context validation in xorgGlxMakeCurrent
vnd has already verified that the context tag is valid before this gets called, and we only set the context tag private data to non-null for indirect clients. Mesa happens to be buggy and doesn't send MakeCurrent requests nearly as much as it should for direct contexts, but if you fix that, then unbinding a direct context would fail here with GLXBadContextTag. Sadly Mesa will still need to carry a workaround here for broken servers, but we should still fix the server.
Diffstat (limited to 'glx')
-rw-r--r--glx/glxcmds.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 6af050940..189b5d913 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -574,10 +574,8 @@ xorgGlxMakeCurrent(ClientPtr client, GLXContextTag tag, XID drawId, XID readId,
/* Look up old context. If we have one, it must be in a usable state. */
if (tag != 0) {
prevglxc = glxServer.getContextTagPrivate(client, tag);
- if (!prevglxc)
- return __glXError(GLXBadContextTag);
- if (prevglxc->renderMode != GL_RENDER) {
+ if (prevglxc && prevglxc->renderMode != GL_RENDER) {
/* Oops. Not in render mode render. */
client->errorValue = prevglxc->id;
return __glXError(GLXBadContextState);