From 618b23a408cc0d9985fef61d243dbb6ae01b10a7 Mon Sep 17 00:00:00 2001 From: Richard Hult Date: Sat, 17 May 2008 07:26:41 +0000 Subject: [PATCH] Use gdk_threads_add_idle instead of g_idle_add. Add a temporary check if 2008-05-17 Richard Hult * gdk/quartz/gdkwindow-quartz.c: (gdk_window_impl_quartz_invalidate_maybe_recurse): (gdk_window_quartz_update_idle): Use gdk_threads_add_idle instead of g_idle_add. Add a temporary check if the window is already in the updates list, since update_area currently doesn't always match the backend's state, see bug #530801. svn path=/trunk/; revision=20108 --- ChangeLog | 9 +++++++++ gdk/quartz/gdkwindow-quartz.c | 13 ++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index b60b5daec0..bee6e75799 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-05-17 Richard Hult + + * gdk/quartz/gdkwindow-quartz.c: + (gdk_window_impl_quartz_invalidate_maybe_recurse): + (gdk_window_quartz_update_idle): Use gdk_threads_add_idle instead + of g_idle_add. Add a temporary check if the window is already in + the updates list, since update_area currently doesn't always match + the backend's state, see bug #530801. + 2008-05-13 Tor Lillqvist Bug 496958 - Wacom Bamboo doesn't function with GTK apps in Win32 diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c index 997e90db6c..ae7a191b2d 100644 --- a/gdk/quartz/gdkwindow-quartz.c +++ b/gdk/quartz/gdkwindow-quartz.c @@ -393,9 +393,7 @@ gdk_window_quartz_process_all_updates (void) static gboolean gdk_window_quartz_update_idle (gpointer data) { - GDK_THREADS_ENTER (); gdk_window_quartz_process_all_updates (); - GDK_THREADS_LEAVE (); return FALSE; } @@ -422,12 +420,17 @@ gdk_window_impl_quartz_invalidate_maybe_recurse (GdkPaintable *paintable, } else { - update_windows = g_slist_prepend (update_windows, window); + /* FIXME: When the update_window/update_area handling is abstracted in + * some way, we can remove this check. Currently it might be cleared + * in the generic code without us knowing, see bug #530801. + */ + if (!g_slist_find (update_windows, window)) + update_windows = g_slist_prepend (update_windows, window); private->update_area = visible_region; if (update_idle == 0) - update_idle = g_idle_add_full (GDK_PRIORITY_REDRAW, - gdk_window_quartz_update_idle, NULL, NULL); + update_idle = gdk_threads_add_idle_full (GDK_PRIORITY_REDRAW, + gdk_window_quartz_update_idle, NULL, NULL); } }