[arch-commits] Commit in gnome-panel/repos (3 files)

Jan de Groot jgc at archlinux.org
Sun Nov 8 17:51:56 EST 2009


    Date: Sunday, November 8, 2009 @ 17:51:56
  Author: jgc
Revision: 58554

Merged revisions 58552 via svnmerge from 
svn+ssh://gerolde.archlinux.org/srv/svn-packages/gnome-panel/trunk

........
  r58552 | jgc | 2009-11-08 23:46:04 +0100 (Sun, 08 Nov 2009) | 2 lines
  
  upgpkg: gnome-panel 2.28.0-2
      Add patch to fix FS#16847
........

Added:
  gnome-panel/repos/extra-x86_64/bug597101.patch
    (from rev 58552, gnome-panel/trunk/bug597101.patch)
Modified:
  gnome-panel/repos/extra-x86_64/	(properties)
  gnome-panel/repos/extra-x86_64/PKGBUILD

-----------------+
 PKGBUILD        |   11 ++++---
 bug597101.patch |   79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 86 insertions(+), 4 deletions(-)


Property changes on: gnome-panel/repos/extra-x86_64
___________________________________________________________________
Modified: svnmerge-integrated
   - /gnome-panel/trunk:1-54930
   + /gnome-panel/trunk:1-58553

Modified: extra-x86_64/PKGBUILD
===================================================================
--- extra-x86_64/PKGBUILD	2009-11-08 22:46:40 UTC (rev 58553)
+++ extra-x86_64/PKGBUILD	2009-11-08 22:51:56 UTC (rev 58554)
@@ -3,21 +3,24 @@
 
 pkgname=gnome-panel
 pkgver=2.28.0
-pkgrel=1
+pkgrel=2
 pkgdesc="The GNOME Panel"
 arch=(i686 x86_64)
 license=('GPL')
 url="http://www.gnome.org"
-depends=('libwnck>=2.28.0' 'gnome-menus>=2.28.0' 'evolution-data-server>=2.28.0' 'gnome-desktop>=2.28.0' 'libgweather>=2.28.0' 'librsvg>=2.26.0' 'libgnomeui>=2.24.1' 'hicolor-icon-theme')
+depends=('libwnck>=2.28.0' 'gnome-menus>=2.28.0.1' 'evolution-data-server>=2.28.1' 'gnome-desktop>=2.28.1' 'libgweather>=2.28.0' 'librsvg>=2.26.0' 'libgnomeui>=2.24.2' 'hicolor-icon-theme')
 makedepends=('gnome-doc-utils>=0.18.0' 'pkgconfig' 'intltool' 'networkmanager')
 options=('!libtool' '!emptydirs')
 groups=('gnome')
 install=gnome-panel.install
-source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.28/${pkgname}-${pkgver}.tar.bz2)
-sha256sums=('c1168c0c8f84692002557d60870c782f4831635080d2c52cd2a3665fb7718465')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.28/${pkgname}-${pkgver}.tar.bz2
+        bug597101.patch)
+sha256sums=('c1168c0c8f84692002557d60870c782f4831635080d2c52cd2a3665fb7718465'
+            '8fb24923d7a6eacc6ff27178bde2a893f05cc5174a51332830ad376750646aa7')
 
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
+  patch -Np1 -i "${srcdir}/bug597101.patch" || return 1
   ./configure --prefix=/usr --sysconfdir=/etc \
       --localstatedir=/var --disable-static \
       --libexecdir=/usr/lib/gnome-panel \

Copied: gnome-panel/repos/extra-x86_64/bug597101.patch (from rev 58552, gnome-panel/trunk/bug597101.patch)
===================================================================
--- extra-x86_64/bug597101.patch	                        (rev 0)
+++ extra-x86_64/bug597101.patch	2009-11-08 22:51:56 UTC (rev 58554)
@@ -0,0 +1,79 @@
+From 66b8e290bd0b767183cba583917907940b5b425a Mon Sep 17 00:00:00 2001
+From: Vincent Untz <vuntz at gnome.org>
+Date: Tue, 06 Oct 2009 10:47:52 +0000
+Subject: [panel] Fix crashes in various conditions with the new randr code
+
+If nothing had probed the randr screen resources before us and the X
+server is supporting randr 1.3, then we got no output, and therefore no
+monitor. The fix here is to actively probe for resources if we detect
+this case. See https://bugzilla.gnome.org/show_bug.cgi?id=597101
+
+Also, in some cases, all outputs appear disconnected. See
+https://bugzilla.novell.com/show_bug.cgi?id=543876
+
+To be completely on the safe side, if we get no monitor information from
+randr, even if it is successful, we fallback to the GTK+ method.
+---
+diff --git a/gnome-panel/panel-multiscreen.c b/gnome-panel/panel-multiscreen.c
+index 8a05221..4ed76ae 100644
+--- a/gnome-panel/panel-multiscreen.c
++++ b/gnome-panel/panel-multiscreen.c
+@@ -136,9 +136,17 @@ panel_multiscreen_get_randr_monitors_for_screen (GdkScreen     *screen,
+ 	xroot = GDK_WINDOW_XWINDOW (gdk_screen_get_root_window (screen));
+ 
+ #if (RANDR_MAJOR > 1 || (RANDR_MAJOR == 1 && RANDR_MINOR >= 3))
+-	if (have_randr_1_3)
++	if (have_randr_1_3) {
+ 		resources = XRRGetScreenResourcesCurrent (xdisplay, xroot);
+-	else
++		if (resources->noutput == 0) {
++			/* This might happen if nothing tried to get randr
++			 * resources from the server before, so we need an
++			 * active probe. See comment #27 in
++			 * https://bugzilla.gnome.org/show_bug.cgi?id=597101 */
++			XRRFreeScreenResources (resources);
++			resources = XRRGetScreenResources (xdisplay, xroot);
++		}
++	} else
+ 		resources = XRRGetScreenResources (xdisplay, xroot);
+ #else
+ 	resources = XRRGetScreenResources (xdisplay, xroot);
+@@ -205,6 +213,17 @@ panel_multiscreen_get_randr_monitors_for_screen (GdkScreen     *screen,
+ 		return FALSE;
+ 	}
+ 
++	if (geometries->len == 0) {
++		/* This can happen in at least one case:
++		 * https://bugzilla.novell.com/show_bug.cgi?id=543876 where all
++		 * monitors appear disconnected (possibly because the  screen
++		 * is behing a KVM switch) -- see comment #8.
++		 * There might be other cases too, so we stay on the safe side.
++		 */
++		g_array_free (geometries, TRUE);
++		return FALSE;
++	}
++
+ 	*monitors_ret = geometries->len;
+ 	*geometries_ret = (GdkRectangle *) g_array_free (geometries, FALSE);
+ 
+@@ -238,9 +257,15 @@ panel_multiscreen_get_raw_monitors_for_screen (GdkScreen     *screen,
+ 					       int           *monitors_ret,
+ 					       GdkRectangle **geometries_ret)
+ {
+-	if (panel_multiscreen_get_randr_monitors_for_screen (screen,
+-							     monitors_ret,
+-							     geometries_ret))
++	gboolean res;
++
++	*monitors_ret = 0;
++	*geometries_ret = NULL;
++
++	res = panel_multiscreen_get_randr_monitors_for_screen (screen,
++							       monitors_ret,
++							       geometries_ret);
++	if (res && *monitors_ret > 0)
+ 		return;
+ 
+ 	panel_multiscreen_get_gdk_monitors_for_screen (screen,
+--
+cgit v0.8.2



More information about the arch-commits mailing list