ports/opt (2.3): gtk: added patch for gdk_window_is_toplevel_frozen, see http://bugzilla.gnome.org/show_bug.cgi?id=482531
commit 8aa056a3a6e87b36e4d6030a44a06d65ce2e194e Author: Matt Housh <jaeger@crux.nu> Date: Tue Oct 9 13:17:35 2007 -0500 gtk: added patch for gdk_window_is_toplevel_frozen, see http://bugzilla.gnome.org/show_bug.cgi?id=482531 diff --git a/gtk/.md5sum b/gtk/.md5sum index 1ca5910..aaf88ae 100644 --- a/gtk/.md5sum +++ b/gtk/.md5sum @@ -1,4 +1,5 @@ eb8046ca31ce7a56b1e36816e9537545 gdk-pixbuf.loaders +b50c279539fca50a496d7feafae350d4 gdkwindow.patch e9c280afec29b11772af5a7c807abf41 gtk+-2.12.0.tar.bz2 3c88561a89724dfe9d807077ba0603c8 gtk-register.sh b203b162788dd918a922be347ca1bf5d gtk.immodules diff --git a/gtk/Pkgfile b/gtk/Pkgfile index c57488d..1cdccc0 100644 --- a/gtk/Pkgfile +++ b/gtk/Pkgfile @@ -5,15 +5,16 @@ name=gtk version=2.12.0 -release=1 +release=2 source=(ftp://ftp.gtk.org/pub/gtk/2.12/${name}+-$version.tar.bz2 \ - gdk-pixbuf.loaders gtk.immodules gtkiconcache.patch \ + gdk-pixbuf.loaders gtk.immodules gtkiconcache.patch gdkwindow.patch \ gtk-register.sh) build () { cd gtk+-$version patch -p1 -i $SRC/gtkiconcache.patch + patch -p0 -i $SRC/gdkwindow.patch ./configure --prefix=/usr \ --mandir=/usr/man diff --git a/gtk/gdkwindow.patch b/gtk/gdkwindow.patch new file mode 100644 index 0000000..92a0ad3 --- /dev/null +++ b/gtk/gdkwindow.patch @@ -0,0 +1,68 @@ +--- gdk/gdkwindow.c.orig 2007-10-02 11:22:11.000000000 +0200 ++++ gdk/gdkwindow.c 2007-10-02 11:22:20.000000000 +0200 +@@ -609,18 +609,21 @@ gdk_window_get_parent (GdkWindow *window + GdkWindow* + gdk_window_get_toplevel (GdkWindow *window) + { + GdkWindowObject *obj; + + g_return_val_if_fail (GDK_IS_WINDOW (window), NULL); + + obj = (GdkWindowObject *)window; +- while (GDK_WINDOW_TYPE (obj) == GDK_WINDOW_CHILD) ++ while (obj && GDK_WINDOW_TYPE (obj) == GDK_WINDOW_CHILD) { + obj = (GdkWindowObject *)obj->parent; ++ } ++ ++ g_return_val_if_fail (obj != NULL, NULL); + + return GDK_WINDOW (obj); + } + + /** + * gdk_window_get_children: + * @window: a #GdkWindow + * +@@ -2290,19 +2293,21 @@ gdk_window_update_idle (gpointer data) + return FALSE; + } + + static gboolean + gdk_window_is_toplevel_frozen (GdkWindow *window) + { + GdkWindowObject *toplevel; + ++ g_return_val_if_fail (window != NULL, FALSE); ++ + toplevel = (GdkWindowObject *)gdk_window_get_toplevel (window); + +- return toplevel->update_and_descendants_freeze_count > 0; ++ return toplevel ? toplevel->update_and_descendants_freeze_count > 0 : FALSE; + } + + static void + gdk_window_schedule_update (GdkWindow *window) + { + if (window && + (GDK_WINDOW_OBJECT (window)->update_freeze_count || + gdk_window_is_toplevel_frozen (window))) +@@ -2428,16 +2433,19 @@ gdk_window_process_all_updates (void) + + update_windows = NULL; + update_idle = 0; + + g_slist_foreach (old_update_windows, (GFunc)g_object_ref, NULL); + + while (tmp_list) + { ++ if(!tmp_list->data) ++ continue; ++ + GdkWindowObject *private = (GdkWindowObject *)tmp_list->data; + + if (private->update_freeze_count || + gdk_window_is_toplevel_frozen (tmp_list->data)) + update_windows = g_slist_prepend (update_windows, private); + else + gdk_window_process_updates_internal (tmp_list->data); +
participants (1)
-
crux@crux.nu