liboobs r219 - in trunk: . oobs



Author: carlosg
Date: Sat Feb 16 19:51:13 2008
New Revision: 219
URL: http://svn.gnome.org/viewvc/liboobs?rev=219&view=rev

Log:
2008-02-16  Carlos Garnacho  <carlosg gnome org>

        * oobs/oobs-object.c (object_changed_idle) (changed_signal_filter):
        Emit the ::changed signal in an idle function, so the callback doesn't
        block other incoming DBus signals.


Modified:
   trunk/ChangeLog
   trunk/oobs/oobs-object.c

Modified: trunk/oobs/oobs-object.c
==============================================================================
--- trunk/oobs/oobs-object.c	(original)
+++ trunk/oobs/oobs-object.c	Sat Feb 16 19:51:13 2008
@@ -210,6 +210,18 @@
   return object;
 }
 
+static gboolean
+object_changed_idle (gpointer data)
+{
+  OobsObject *object;
+
+  object = OOBS_OBJECT (data);
+
+  g_signal_emit (object, object_signals [CHANGED], 0);
+
+  return FALSE;
+}
+
 static DBusHandlerResult
 changed_signal_filter (DBusConnection *connection,
 		       DBusMessage    *message,
@@ -223,7 +235,7 @@
 
   if (dbus_message_is_signal (message, priv->method, "changed") &&
       dbus_message_has_path (message, priv->path))
-    g_signal_emit (object, object_signals [CHANGED], 0);
+    g_idle_add (object_changed_idle, object);
 
   /* we want the rest of the objects of
    * the same type to get the signal too



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