summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorRichard Hult <richard@imendio.com>2008-05-17 07:26:41 +0000
committerRichard Hult <rhult@src.gnome.org>2008-05-17 07:26:41 +0000
commit618b23a408cc0d9985fef61d243dbb6ae01b10a7 (patch)
treead623771066c9b09634e6c117fbe2a631307d1c9 /gdk
parentf0ded97ab414ecb21a6c7eb917e313c42004d909 (diff)
downloadgtk+-618b23a408cc0d9985fef61d243dbb6ae01b10a7.tar.gz
Use gdk_threads_add_idle instead of g_idle_add. Add a temporary check if
2008-05-17 Richard Hult <richard@imendio.com> * 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
Diffstat (limited to 'gdk')
-rw-r--r--gdk/quartz/gdkwindow-quartz.c13
1 files changed, 8 insertions, 5 deletions
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);
}
}