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

xorg-server: Changes to 'ubuntu'



 debian/changelog                                          |   11 ++-
 debian/patches/114_dri2_make_sure_x_drawable_exists.patch |   47 ++++++++++++++
 debian/patches/series                                     |    1 
 3 files changed, 57 insertions(+), 2 deletions(-)

New commits:
commit d634102f0889a7fb56a9d8763740dd3a0a052876
Author: Bryce Harrington <bryce@bryceharrington.org>
Date:   Tue Apr 6 18:16:43 2010 -0700

    Adding patch from Sarvatt for bug #550218 to fix clutter close crash

diff --git a/debian/changelog b/debian/changelog
index ff55836..0be473b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,15 +1,22 @@
-xorg-server (2:1.7.6-2ubuntu2) UNRELEASED; urgency=low
+xorg-server (2:1.7.6-2ubuntu2) lucid; urgency=low
 
+  [Bryce Harrington]
   * Add 113_quell_nouveau_aiglx.patch: Don't emit error message about
     AIGLX on nouveau.  3D is not supported yet on -nouveau so this error
     message serves only to confuse bug reporters.
     (LP: #529590)
 
+  [Robert Sarvatt]
+  * Add 114_dri2_make_sure_x_drawable_exists.patch: Makes sure
+    a corresponding X drawable exists before trying to use it, fixing 
+    xserver segfaults under DRI2 when closing down GLX apps.
+    (LP: #550218)
+
  -- Bryce Harrington <bryce@ubuntu.com>  Wed, 31 Mar 2010 16:37:45 -0700
 
 xorg-server (2:1.7.6-2ubuntu1) lucid; urgency=low
 
-  [ Timo Aaltonen ]
+  [ Timo Aaltonen ]
   * Merge from Debian unstable. (LP: #546933)
 
   [ Michael Casadevall ]
diff --git a/debian/patches/114_dri2_make_sure_x_drawable_exists.patch b/debian/patches/114_dri2_make_sure_x_drawable_exists.patch
new file mode 100644
index 0000000..4fb4b9e
--- /dev/null
+++ b/debian/patches/114_dri2_make_sure_x_drawable_exists.patch
@@ -0,0 +1,47 @@
+diff --git a/glx/glxcmds.c b/glx/glxcmds.c
+index 77afbf4..95a667a 100644
+--- a/glx/glxcmds.c
++++ b/glx/glxcmds.c
+@@ -1086,6 +1086,7 @@ __glXDrawableInit(__GLXdrawable *drawable,
+ 		  XID drawId, __GLXconfig *config)
+ {
+     drawable->pDraw = pDraw;
++    drawable->xDrawId = pDraw->id;
+     drawable->type = type;
+     drawable->drawId = drawId;
+     drawable->config = config;
+diff --git a/glx/glxdrawable.h b/glx/glxdrawable.h
+index 2a365c5..227bc95 100644
+--- a/glx/glxdrawable.h
++++ b/glx/glxdrawable.h
+@@ -52,6 +52,7 @@ struct __GLXdrawable {
+     void      (*waitGL)(__GLXdrawable *);
+ 
+     DrawablePtr pDraw;
++    XID xDrawId;
+     XID drawId;
+ 
+     /*
+diff --git a/glx/glxdri2.c b/glx/glxdri2.c
+index e791bf6..adfb18e 100644
+--- a/glx/glxdri2.c
++++ b/glx/glxdri2.c
+@@ -102,12 +102,16 @@ __glXDRIdrawableDestroy(__GLXdrawable *drawable)
+ {
+     __GLXDRIdrawable *private = (__GLXDRIdrawable *) drawable;
+     const __DRIcoreExtension *core = private->screen->core;
+-    
++    DrawablePtr pDraw;
++    int err;
++
+     (*core->destroyDrawable)(private->driDrawable);
+ 
+     /* If the X window was destroyed, the dri DestroyWindow hook will
+      * aready have taken care of this, so only call if pDraw isn't NULL. */
+-    if (drawable->pDraw != NULL)
++    err = dixLookupDrawable(&pDraw, drawable->xDrawId, serverClient, 0,
++			    DixWriteAccess);
++    if (err == Success && pDraw)
+ 	DRI2DestroyDrawable(drawable->pDraw);
+ 
+     __glXDrawableRelease(drawable);
diff --git a/debian/patches/series b/debian/patches/series
index 43aba93..055d109 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -26,6 +26,7 @@
 111_armel-drv-fallbacks.patch
 112_xaa-fbcomposite-fix-negative-size.patch
 113_quell_nouveau_aiglx.patch
+114_dri2_make_sure_x_drawable_exists.patch
 121_only_switch_vt_when_active.diff
 #143_default_to_vesa.patch
 157_check_null_modes.patch


Reply to: