summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk/.md5sum1
-rw-r--r--gtk/Pkgfile5
-rw-r--r--gtk/gdkwindow.patch68
3 files changed, 72 insertions, 2 deletions
diff --git a/gtk/.md5sum b/gtk/.md5sum
index 1ca5910d6..aaf88ae40 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 c57488db1..1cdccc095 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 000000000..92a0ad372
--- /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);
+

Generated by cgit