gtk: added patch for gdk_window_is_toplevel_frozen, see http://bugzilla.gnome.org/show_bug.cgi?id=482531
This commit is contained in:
parent
8ef512f64f
commit
8aa056a3a6
@ -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
|
||||
|
@ -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
|
||||
|
68
gtk/gdkwindow.patch
Normal file
68
gtk/gdkwindow.patch
Normal file
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user