Mesa (master): glx/dri2: Paper over errors in DRI2Connect when indirect

Eric Anholt anholt at kemper.freedesktop.org
Fri Aug 5 10:17:16 PDT 2011


Module: Mesa
Branch: master
Commit: fbc2fcf685d22ec9bc9465e1f731529979497eaa
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fbc2fcf685d22ec9bc9465e1f731529979497eaa

Author: Christopher James Halse Rogers <christopher.halse.rogers at canonical.com>
Date:   Thu Aug  4 12:06:13 2011 +1000

glx/dri2: Paper over errors in DRI2Connect when indirect

DRI2 will throw BadRequest for this when the client is not local, but
DRI2 is an implementation detail and not something callers should have
to know about.  Silently swallow errors in this case, and just propagate
the failure through DRI2Connect's return code.

Note: This is a candidate for the stable release branches.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=28125
Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers at canonical.com>

---

 src/glx/dri2.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/src/glx/dri2.c b/src/glx/dri2.c
index 229840d..b1b5013 100644
--- a/src/glx/dri2.c
+++ b/src/glx/dri2.c
@@ -190,6 +190,15 @@ DRI2Error(Display *display, xError *err, XExtCodes *codes, int *ret_code)
 	err->minorCode == X_DRI2DestroyDrawable)
 	return True;
 
+    /* If the server is non-local DRI2Connect will raise BadRequest.
+     * Swallow this so that DRI2Connect can signal this in its return code */
+    if (err->majorCode == codes->major_opcode &&
+        err->minorCode == X_DRI2Connect &&
+        err->errorCode == BadRequest) {
+	*ret_code = False;
+	return True;
+    }
+
     return False;
 }
 



More information about the mesa-commit mailing list