diff options
author | marha <marha@users.sourceforge.net> | 2014-04-23 22:41:48 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2014-04-23 22:41:48 +0200 |
commit | d26ea2f474c48afa7d3c261572da5d85b7b62bd8 (patch) | |
tree | f4b1f3cac1b011283ae536868c3aee42bc14ff07 /xorg-server/glx/glxcmds.c | |
parent | dda1497a1e88c6cb8b8d91a7bc61283b697e8ea0 (diff) | |
download | vcxsrv-d26ea2f474c48afa7d3c261572da5d85b7b62bd8.tar.gz vcxsrv-d26ea2f474c48afa7d3c261572da5d85b7b62bd8.tar.bz2 vcxsrv-d26ea2f474c48afa7d3c261572da5d85b7b62bd8.zip |
fontconfig mesa xserver xkeyboard-config pixman git update 23 Apr 2014
xserver commit 99f0365b1fbdfd9238b9f5cc28491e4e6c7324f1
xkeyboard-config commit b5eb5418e5a9d76b172faadf6901bc9c83f2ddad
pixman commit 5f661ee719be25c3aa0eb0d45e0db23a37e76468
fontconfig commit 81664fe54f117e4781fda5a30429b51858302e91
mesa commit fd92346c53ed32709c7b56ce58fb9c9bf43ce9a8
Diffstat (limited to 'xorg-server/glx/glxcmds.c')
-rw-r--r-- | xorg-server/glx/glxcmds.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/xorg-server/glx/glxcmds.c b/xorg-server/glx/glxcmds.c index 187e42665..2fc3f4cc8 100644 --- a/xorg-server/glx/glxcmds.c +++ b/xorg-server/glx/glxcmds.c @@ -188,7 +188,7 @@ validGlxDrawable(ClientPtr client, XID id, int type, int access_mode, void __glXContextDestroy(__GLXcontext * context) { - __glXFlushContextCache(); + lastGLContext = NULL; } static void @@ -275,6 +275,17 @@ DoCreateContext(__GLXclientState * cl, GLXContextID gcId, ** Allocate memory for the new context */ if (!isDirect) { + /* Only allow creating indirect GLX contexts if allowed by + * server command line. Indirect GLX is of limited use (since + * it's only GL 1.4), it's slower than direct contexts, and + * it's a massive attack surface for buffer overflow type + * errors. + */ + if (!enableIndirectGLX) { + client->errorValue = isDirect; + return BadValue; + } + /* Without any attributes, the only error that the driver should be * able to generate is BadAlloc. As result, just drop the error * returned from the driver on the floor. @@ -434,10 +445,6 @@ static void StopUsingContext(__GLXcontext * glxc) { if (glxc) { - if (glxc == __glXLastContext) { - /* Tell server GL library */ - __glXLastContext = 0; - } glxc->currentClient = NULL; if (!glxc->idExists) { FreeResourceByType(glxc->id, __glXContextRes, FALSE); @@ -448,7 +455,6 @@ StopUsingContext(__GLXcontext * glxc) static void StartUsingContext(__GLXclientState * cl, __GLXcontext * glxc) { - __glXLastContext = glxc; glxc->currentClient = cl->client; } @@ -627,7 +633,7 @@ DoMakeCurrent(__GLXclientState * cl, if (!(*prevglxc->loseCurrent) (prevglxc)) { return __glXError(GLXBadContext); } - __glXFlushContextCache(); + lastGLContext = NULL; if (!prevglxc->isDirect) { prevglxc->drawPriv = NULL; prevglxc->readPriv = NULL; @@ -640,7 +646,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); |