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

mesa: Changes to 'ubuntu'



 debian/changelog                                        |   12 +
 debian/control                                          |    3 
 debian/patches/108_fix_leaks_dri2_screen_creation.patch |  107 ++++++++++++++++
 debian/patches/series                                   |    1 
 4 files changed, 122 insertions(+), 1 deletion(-)

New commits:
commit 54e088badb0198655936440091ad8f5fd860aaa0
Author: Bryce Harrington <bryce@canonical.com>
Date:   Mon Feb 14 16:03:50 2011 -0800

    Bump

diff --git a/debian/changelog b/debian/changelog
index cac8fe3..eff1c45 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,8 +5,10 @@ mesa (7.10-1ubuntu2) natty; urgency=low
     applications to fail with error, "BadLength (poly request too large or
     internal Xlib length".
     (LP: #714280)
+  * Change dep on libudev-dev to not limit to linux-any (fixes FTBS when
+    using pbuilder, see deb bug 600823)
 
- -- Bryce Harrington <bryce@ubuntu.com>  Mon, 14 Feb 2011 11:32:25 -0800
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 14 Feb 2011 11:44:22 -0800
 
 mesa (7.10-1ubuntu1) natty; urgency=lowe
 
diff --git a/debian/control b/debian/control
index 48c4f73..cc355dc 100644
--- a/debian/control
+++ b/debian/control
@@ -12,7 +12,8 @@ Build-Depends: debhelper (>= 7.2.7), quilt (>= 0.40), pkg-config,
  libxdamage-dev, libxext-dev, autoconf, automake, x11proto-dri2-dev (>= 2.1),
  linux-libc-dev (>= 2.6.31) [linux-any],
  libx11-xcb-dev, libxcb-dri2-0-dev, libxcb-xfixes0-dev, python-libxml2,
- libtalloc-dev, libudev-dev [linux-any],
+# libtalloc-dev, libudev-dev [linux-any],
+ libtalloc-dev, libudev-dev,
 Vcs-Git: git://git.debian.org/git/pkg-xorg/lib/mesa
 Vcs-Browser: http://git.debian.org/?p=pkg-xorg/lib/mesa.git
 Homepage: http://mesa3d.sourceforge.net/

commit 5e6e8ebf658714712f496f941a38946c1d1cdc6a
Author: Bryce Harrington <bryce@canonical.com>
Date:   Mon Feb 14 11:35:22 2011 -0800

    Add 108_fix_leaks_dri2_screen_creation.patch: Cherrypick from upstream to fix leaks in DRI2 screen creation error paths, which causes Clutter applications to fail with error, "BadLength (poly request too large or internal Xlib length". (LP: #714280)

diff --git a/debian/changelog b/debian/changelog
index dbac118..cac8fe3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+mesa (7.10-1ubuntu2) natty; urgency=low
+
+  * Add 108_fix_leaks_dri2_screen_creation.patch: Cherrypick from upstream
+    to fix leaks in DRI2 screen creation error paths, which causes Clutter
+    applications to fail with error, "BadLength (poly request too large or
+    internal Xlib length".
+    (LP: #714280)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 14 Feb 2011 11:32:25 -0800
+
 mesa (7.10-1ubuntu1) natty; urgency=lowe
 
   * Merge from Debian experimental.  Remaining Ubuntu changes:
diff --git a/debian/patches/108_fix_leaks_dri2_screen_creation.patch b/debian/patches/108_fix_leaks_dri2_screen_creation.patch
new file mode 100644
index 0000000..6f5b7a7
--- /dev/null
+++ b/debian/patches/108_fix_leaks_dri2_screen_creation.patch
@@ -0,0 +1,107 @@
+From bfc889517ad0d490cce1817eecac146d66bcd923 Mon Sep 17 00:00:00 2001
+From: Henri Verbeet <hverbeet@gmail.com>
+Date: Sat, 29 Jan 2011 23:00:48 +0000
+Subject: glx: Fix leaks in DRI2 screen creation error paths.
+
+Signed-off-by: Brian Paul <brianp@vmware.com>
+---
+diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
+index 75b1a10..ab7915c 100644
+--- a/src/glx/dri2_glx.c
++++ b/src/glx/dri2_glx.c
+@@ -804,11 +804,14 @@ dri2CreateScreen(int screen, struct glx_display * priv)
+       return NULL;
+ 
+    memset(psc, 0, sizeof *psc);
+-   if (!glx_screen_init(&psc->base, screen, priv))
+-       return NULL;
++   if (!glx_screen_init(&psc->base, screen, priv)) {
++      Xfree(psc);
++      return NULL;
++   }
+ 
+    if (!DRI2Connect(priv->dpy, RootWindow(priv->dpy, screen),
+ 		    &driverName, &deviceName)) {
++      glx_screen_cleanup(&psc->base);
+       XFree(psc);
+       return NULL;
+    }
+@@ -918,12 +921,15 @@ dri2CreateScreen(int screen, struct glx_display * priv)
+    return &psc->base;
+ 
+ handle_error:
++   if (psc->fd)
++      close(psc->fd);
++   if (psc->driver)
++      dlclose(psc->driver);
+    Xfree(driverName);
+    Xfree(deviceName);
++   glx_screen_cleanup(&psc->base);
+    XFree(psc);
+ 
+-   /* FIXME: clean up here */
+-
+    return NULL;
+ }
+ 
+diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h
+index 36a0808..fdcef80 100644
+--- a/src/glx/glxclient.h
++++ b/src/glx/glxclient.h
+@@ -585,6 +585,8 @@ struct glx_display
+ extern int
+ glx_screen_init(struct glx_screen *psc,
+ 		int screen, struct glx_display * priv);
++extern void
++glx_screen_cleanup(struct glx_screen *psc);
+ 
+ #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+ extern __GLXDRIdrawable *
+diff --git a/src/glx/glxext.c b/src/glx/glxext.c
+index c75c9bf..25d266e 100644
+--- a/src/glx/glxext.c
++++ b/src/glx/glxext.c
+@@ -194,17 +194,7 @@ FreeScreenConfigs(struct glx_display * priv)
+    screens = ScreenCount(priv->dpy);
+    for (i = 0; i < screens; i++) {
+       psc = priv->screens[i];
+-      if (psc->configs) {
+-	 glx_config_destroy_list(psc->configs);
+-         if (psc->effectiveGLXexts)
+-            Xfree(psc->effectiveGLXexts);
+-         psc->configs = NULL;   /* NOTE: just for paranoia */
+-      }
+-      if (psc->visuals) {
+-	 glx_config_destroy_list(psc->visuals);
+-	 psc->visuals = NULL;   /* NOTE: just for paranoia */
+-      }
+-      Xfree((char *) psc->serverGLXexts);
++      glx_screen_cleanup(psc);
+ 
+ #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+       if (psc->driScreen) {
+@@ -728,6 +718,22 @@ glx_screen_init(struct glx_screen *psc,
+    return GL_TRUE;
+ }
+ 
++_X_HIDDEN void
++glx_screen_cleanup(struct glx_screen *psc)
++{
++   if (psc->configs) {
++      glx_config_destroy_list(psc->configs);
++      if (psc->effectiveGLXexts)
++          Xfree(psc->effectiveGLXexts);
++      psc->configs = NULL;   /* NOTE: just for paranoia */
++   }
++   if (psc->visuals) {
++      glx_config_destroy_list(psc->visuals);
++      psc->visuals = NULL;   /* NOTE: just for paranoia */
++   }
++   Xfree((char *) psc->serverGLXexts);
++}
++
+ /*
+ ** Allocate the memory for the per screen configs for each screen.
+ ** If that works then fetch the per screen configs data.
+--
+cgit v0.8.3-6-g21f6
diff --git a/debian/patches/series b/debian/patches/series
index aa5b52a..ab4131f 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -11,3 +11,4 @@
 103_savage-expose_fbmodes_with_nonzero_alpha.patch
 105_use_shared_libdricore.patch
 107_winsys_buffer_nullptr.patch
+108_fix_leaks_dri2_screen_creation.patch


Reply to: