From: Ian Romanick <[email protected]>

Signed-off-by: Ian Romanick <[email protected]>
---
 glx/glxcmds.c |   22 +++++++++++-----------
 1 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index d5b764f..c5de60d 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -248,19 +248,19 @@ DoCreateContext(__GLXclientState *cl, GLXContextID gcId,
                             &shareglxc, &err))
            return err;
 
-       if (shareglxc->isDirect) {
-           /*
-           ** NOTE: no support for sharing display lists between direct
-           ** contexts, even if they are in the same address space.
-           */
-#if 0
-            /* Disabling this code seems to allow shared display lists
-             * and texture objects to work.  We'll leave it disabled for now.
-             */
+       /* Page 26 (page 32 of the PDF) of the GLX 1.4 spec says:
+        *
+        *     "The server context state for all sharing contexts must exist
+        *     in a single address space or a BadMatch error is generated."
+        *
+        * If the share context is indirect, force the new context to also be
+        * indirect.  If the shard context is direct but the new context
+        * cannot be direct, generate BadMatch.
+        */
+       if (shareglxc->isDirect && !isDirect) {
            client->errorValue = shareList;
            return BadMatch;
-#endif
-       } else {
+       } else if (!shareglxc->isDirect) {
            /*
            ** Create an indirect context regardless of what the client asked
            ** for; this way we can share display list space with shareList.
-- 
1.7.6.4

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to