gtk+ r20108 - in trunk: . gdk/quartz



Author: rhult
Date: Sat May 17 07:26:41 2008
New Revision: 20108
URL: http://svn.gnome.org/viewvc/gtk+?rev=20108&view=rev

Log:
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.


Modified:
   trunk/ChangeLog
   trunk/gdk/quartz/gdkwindow-quartz.c

Modified: trunk/gdk/quartz/gdkwindow-quartz.c
==============================================================================
--- trunk/gdk/quartz/gdkwindow-quartz.c	(original)
+++ trunk/gdk/quartz/gdkwindow-quartz.c	Sat May 17 07:26:41 2008
@@ -393,9 +393,7 @@
 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 @@
     }
   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);
     }
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]