libbonobo r3480 - in trunk: . activation-server



Author: michael
Date: Mon Jul  7 10:30:33 2008
New Revision: 3480
URL: http://svn.gnome.org/viewvc/libbonobo?rev=3480&view=rev

Log:
2008-07-07  Michael Meeks  <michael meeks novell com>

        * activation-server/activation-context-corba.c (ac_rescan),
        * activation-server/object-directory-corba.c (as_rescan): 
        fix identical bug in cut/paste code (urgh): we should reset
        idle_id in the idle handler, so we can cope with the race
        more than once. Switch to a 100ms timeout from idle too: to
        cope with lots of app death on Zap more efficiently.



Modified:
   trunk/ChangeLog
   trunk/activation-server/activation-context-corba.c
   trunk/activation-server/object-directory-corba.c

Modified: trunk/activation-server/activation-context-corba.c
==============================================================================
--- trunk/activation-server/activation-context-corba.c	(original)
+++ trunk/activation-server/activation-context-corba.c	Mon Jul  7 10:30:33 2008
@@ -354,17 +354,20 @@
 }
 
 static gboolean
-ac_rescan (gpointer data)
+ac_rescan (gpointer is_idle_rescan)
 {
         static gboolean in_rescan = FALSE;
         static guint idle_id = 0;
 
         server_lock ();
 
+        if (GPOINTER_TO_UINT (is_idle_rescan))
+                idle_id = 0;
+
         /* We tend to get a lot of 'broken' callbacks at once */
         if (in_rescan) {
                 if (!idle_id)
-                        idle_id = g_idle_add (ac_rescan, NULL);
+                        idle_id = g_timeout_add (100, ac_rescan, GUINT_TO_POINTER(1));
                 server_unlock ();
                 return FALSE;
         }

Modified: trunk/activation-server/object-directory-corba.c
==============================================================================
--- trunk/activation-server/object-directory-corba.c	(original)
+++ trunk/activation-server/object-directory-corba.c	Mon Jul  7 10:30:33 2008
@@ -687,7 +687,7 @@
 }
 
 static gboolean
-as_rescan (gpointer data)
+as_rescan (gpointer is_idle_rescan)
 {
         ObjectDirectory *od;
         static gboolean in_rescan = FALSE;
@@ -695,6 +695,9 @@
 
         server_lock ();
 
+        if (GPOINTER_TO_UINT (is_idle_rescan))
+                idle_id = 0;
+
         if (!(od = main_dir)) { /* shutting down */
                 server_unlock ();
                 return FALSE;
@@ -703,7 +706,7 @@
         /* We tend to get a lot of 'broken' callbacks at once */
         if (in_rescan) {
                 if (!idle_id)
-                        idle_id = g_idle_add (as_rescan, NULL);
+                        idle_id = g_timeout_add (100, as_rescan, GUINT_TO_POINTER (1));
                 server_unlock ();
                 return FALSE;
         }



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