[arch-commits] Commit in gdm/trunk (PKGBUILD fix_crasher_with_gtk307.patch)

Ionut Biru ibiru at archlinux.org
Sat Apr 2 11:09:25 UTC 2011


    Date: Saturday, April 2, 2011 @ 07:09:24
  Author: ibiru
Revision: 117454

upgpkg: gdm 2.91.94-2
fix crasher with gtk 3.0.7

Added:
  gdm/trunk/fix_crasher_with_gtk307.patch
Modified:
  gdm/trunk/PKGBUILD

-------------------------------+
 PKGBUILD                      |   11 +++-
 fix_crasher_with_gtk307.patch |  104 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 112 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2011-04-02 08:47:35 UTC (rev 117453)
+++ PKGBUILD	2011-04-02 11:09:24 UTC (rev 117454)
@@ -2,7 +2,7 @@
 # Maintainer: Jan de Groot <jgc at archlinux.org>
 pkgname=gdm
 pkgver=2.91.94
-pkgrel=1
+pkgrel=2
 pkgdesc="Gnome Display Manager (a reimplementation of xdm)"
 arch=('i686' 'x86_64')
 license=('GPL')
@@ -20,19 +20,24 @@
         gdm-vt-allocation-hack.patch
         gdm.pam
         gdm-autologin.pam
-        gdm)
+        gdm
+        fix_crasher_with_gtk307.patch)
 sha256sums=('b7145c611887a9153e1d06b1ec2cd554c141cf74af7216c2beef4b01d8f75e88'
             '92c5eb913b9556cffe9b5bb89e5c3435703e929addfb98145442f58af5d532c1'
             '3c8b588d4af08d94dc93bcd5e4c2a983c3f4fbbbe40833bceac2a1df4f1e8215'
             'f1dfa4d88288d4b0a631a68a51b46c2da537bee8fe5a99f9f288c8ff75a50b19'
             '3daff680ff6b7ea56f84f40843e46e72477c81e9e405028203c942af04d07ae5'
-            '272c08d8e8b50bf424d0705ac864d4c18c47ec4f6893b1af732c2efbc86c9550')
+            '272c08d8e8b50bf424d0705ac864d4c18c47ec4f6893b1af732c2efbc86c9550'
+            '6d08951919dcb1f928dd67c0b5a5c209b32464c2374ee7d2369ed8e914d541c9')
 
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
   patch -Np1 -i "${srcdir}/2.91_fix_external_program_directories.patch"
   patch -Np1 -i "${srcdir}/gdm-vt-allocation-hack.patch"
 
+  #https://bugzilla.gnome.org/show_bug.cgi?id=646498
+  patch -Np1 -i "${srcdir}/fix_crasher_with_gtk307.patch"
+
   ./configure --prefix=/usr --sysconfdir=/etc \
       --libexecdir=/usr/lib/gdm --localstatedir=/var --disable-static \
       --with-at-spi-registryd-directory=/usr/lib/at-spi \

Added: fix_crasher_with_gtk307.patch
===================================================================
--- fix_crasher_with_gtk307.patch	                        (rev 0)
+++ fix_crasher_with_gtk307.patch	2011-04-02 11:09:24 UTC (rev 117454)
@@ -0,0 +1,104 @@
+From 045c319f2655fc45c24951479eb9cd1e59792cef Mon Sep 17 00:00:00 2001
+From: Benjamin Otte <otte at redhat.com>
+Date: Sat, 2 Apr 2011 04:10:09 +0200
+Subject: [PATCH] simple-greeter: Don't request an invalid size
+
+GTK widgets must at all times report a size they can handle. So it is
+not allowed to return 0 when not realized, because then size allocations
+break when GTK uses this size for its widget.
+In this case, GTK uses the pre-realize size to determine the size it
+should request when creating the greeter window - chicken and egg so to
+say.
+
+This patch just uses the default monitor (I guess the root window's
+monitor is the default monitor?) for determining the login window size.
+
+One thing this patch doesn't do is add a call to gtk_widget_queue_resize()
+from the realize callback or from monitor-changing signals, though
+that's probably technically necessary.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=646498
+---
+ gui/simple-greeter/gdm-greeter-login-window.c |   28 +++++++++----------------
+ 1 files changed, 10 insertions(+), 18 deletions(-)
+
+diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
+index abd6707..3ec9a09 100644
+--- a/gui/simple-greeter/gdm-greeter-login-window.c
++++ b/gui/simple-greeter/gdm-greeter-login-window.c
+@@ -1413,25 +1413,22 @@ gdm_greeter_login_window_get_preferred_width (GtkWidget *widget,
+ {
+         int             monitor;
+         GdkScreen      *screen;
++        GdkWindow      *window;
+         GdkRectangle    area;
+         GtkAllocation   widget_allocation;
+         int             min_size;
+         int             nat_size;
+ 
+-        min_size = 0;
+-        nat_size = 0;
+-
+-        if (!gtk_widget_get_realized (widget)) {
+-                goto out;
+-        }
+-
+         gtk_widget_get_preferred_width (gtk_bin_get_child (GTK_BIN (widget)),
+                                         &min_size,
+                                         &nat_size);
+ 
+         /* Make width be at least 33% screen width */
+         screen = gtk_widget_get_screen (widget);
+-        monitor = gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window (widget));
++        window = gtk_widget_get_window (widget);
++        if (window == NULL)
++          window = gdk_screen_get_root_window (screen);
++        monitor = gdk_screen_get_monitor_at_window (screen, window);
+         gdk_screen_get_monitor_geometry (screen, monitor, &area);
+         min_size = MAX (min_size, .33 * area.width);
+         nat_size = MAX (nat_size, .33 * area.width);
+@@ -1442,7 +1439,6 @@ gdm_greeter_login_window_get_preferred_width (GtkWidget *widget,
+         min_size = MAX (min_size, widget_allocation.width);
+         nat_size = MAX (nat_size, widget_allocation.width);
+ 
+- out:
+         if (minimum_size)
+                 *minimum_size = min_size;
+         if (natural_size)
+@@ -1456,29 +1452,25 @@ gdm_greeter_login_window_get_preferred_height (GtkWidget *widget,
+ {
+         int             monitor;
+         GdkScreen      *screen;
++        GdkWindow      *window;
+         GdkRectangle    area;
+         int             min_size;
+         int             nat_size;
+ 
+-        min_size = 0;
+-        nat_size = 0;
+-
+-        if (!gtk_widget_get_realized (widget)) {
+-                goto out;
+-        }
+-
+         gtk_widget_get_preferred_height (gtk_bin_get_child (GTK_BIN (widget)),
+                                         &min_size,
+                                         &nat_size);
+ 
+         /* Make height be at most 80% of screen height */
+         screen = gtk_widget_get_screen (widget);
+-        monitor = gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window (widget));
++        window = gtk_widget_get_window (widget);
++        if (window == NULL)
++          window = gdk_screen_get_root_window (screen);
++        monitor = gdk_screen_get_monitor_at_window (screen, window);
+         gdk_screen_get_monitor_geometry (screen, monitor, &area);
+         min_size = MIN (min_size, .8 * area.height);
+         nat_size = MIN (nat_size, .8 * area.height);
+ 
+- out:
+         if (minimum_size)
+                 *minimum_size = min_size;
+         if (natural_size)
+-- 
+1.7.4
\ No newline at end of file




More information about the arch-commits mailing list