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 <[email protected]> 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 <[email protected]> +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
