[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#628907: pu: package mesa/7.7.1-5



On Thu, Jun  2, 2011 at 12:31:29 +0200, Julien Cristau wrote:

> Package: release.debian.org
> Severity: normal
> User: release.debian.org@packages.debian.org
> Usertags: pu
> 
> I'm pondering a mesa update to fix a silly issue with dri2: when a
> client is not local, direct rendering is not possible so the X server
> returns a BadRequest error for all dri2 requests (except for
> QueryVersion).  mesa then crashes instead of falling back to software
> rendering.  Tested on an ltsp client running squeeze.  I assume you'll
> want this fixed in sid first, so I won't upload until then anyway.
> 
Updated diff:

diff -u mesa-7.7.1/debian/watch mesa-7.7.1/debian/watch
--- mesa-7.7.1/debian/watch
+++ mesa-7.7.1/debian/watch
@@ -1,3 +1,4 @@
+#git=git://anongit.freedesktop.org/mesa/mesa
 version=3
 opts="uversionmangle=s/-rc/~rc/" \
 http://sf.net/mesa3d/MesaLib-(.*)\.tar\.gz
diff -u mesa-7.7.1/debian/changelog mesa-7.7.1/debian/changelog
--- mesa-7.7.1/debian/changelog
+++ mesa-7.7.1/debian/changelog
@@ -1,3 +1,10 @@
+mesa (7.7.1-5) squeeze; urgency=low
+
+  * glx: suppress BadRequest from DRI2Connect (which is expected for non-local
+    clients).
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 03 Sep 2011 17:12:53 +0200
+
 mesa (7.7.1-4) unstable; urgency=low
 
   [ Brice Goglin ]
diff -u mesa-7.7.1/debian/patches/series mesa-7.7.1/debian/patches/series
--- mesa-7.7.1/debian/patches/series
+++ mesa-7.7.1/debian/patches/series
@@ -6,0 +7 @@
+08_glx-ignore-BadRequest-errors-from-DRI2Connect.diff
only in patch2:
unchanged:
--- mesa-7.7.1.orig/debian/patches/08_glx-ignore-BadRequest-errors-from-DRI2Connect.diff
+++ mesa-7.7.1/debian/patches/08_glx-ignore-BadRequest-errors-from-DRI2Connect.diff
@@ -0,0 +1,54 @@
+From 46f568ec04eacb500f4057c31453b5e80b4e8aaf Mon Sep 17 00:00:00 2001
+From: Julien Cristau <jcristau@debian.org>
+Date: Tue, 31 May 2011 16:02:21 +0200
+Subject: [PATCH] glx: ignore BadRequest errors from DRI2Connect
+
+They are expected for non-local clients.
+---
+ src/glx/x11/dri2.c |   14 +++++++++++++-
+ 1 files changed, 13 insertions(+), 1 deletions(-)
+
+Index: mesa/src/glx/x11/dri2.c
+===================================================================
+--- mesa.orig/src/glx/x11/dri2.c
++++ mesa/src/glx/x11/dri2.c
+@@ -54,6 +54,8 @@
+ static char dri2ExtensionName[] = DRI2_NAME;
+ static XExtensionInfo *dri2Info;
+ static XEXT_GENERATE_CLOSE_DISPLAY (DRI2CloseDisplay, dri2Info)
++static int
++DRI2Error(Display *dpy, xError *err, XExtCodes *codes, int *ret_code);
+ 
+ static /* const */ XExtensionHooks dri2ExtensionHooks = {
+   NULL,                   /* create_gc */
+@@ -65,7 +67,7 @@ static /* const */ XExtensionHooks dri2E
+   DRI2CloseDisplay,       /* close_display */
+   NULL,                   /* wire_to_event */
+   NULL,                   /* event_to_wire */
+-  NULL,                   /* error */
++  DRI2Error,              /* error */
+   NULL,                   /* error_string */
+ };
+ 
+@@ -75,6 +77,21 @@ static XEXT_GENERATE_FIND_DISPLAY (DRI2F
+                                    &dri2ExtensionHooks,
+                                    0, NULL)
+ 
++static int
++DRI2Error(Display *dpy, xError *err, XExtCodes *codes, int *ret_code)
++{
++    /* 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->errorCode == BadRequest &&
++	err->minorCode == X_DRI2Connect) {
++	*ret_code = False;
++	return True;
++    }
++
++    return False;
++}
++
+ Bool
+ DRI2QueryExtension(Display * dpy, int *eventBase, int *errorBase)
+ {



Reply to: