2003-02-13 Anders Carlsson <andersca@codefactory.se>
authorAnders Carlsson <andersca@codefactory.se>
Thu, 13 Feb 2003 20:37:07 +0000 (20:37 +0000)
committerAnders Carlsson <andersca@codefactory.se>
Thu, 13 Feb 2003 20:37:07 +0000 (20:37 +0000)
* glib/dbus-gmain.c: (timeout_handler), (add_timeout),
(remove_timeout):
Implement support for timeouts in dbus-glib.

ChangeLog
glib/dbus-gmain.c

index 778fed0..5c5645c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
 
+       * glib/dbus-gmain.c: (timeout_handler), (add_timeout),
+       (remove_timeout):
+       Implement support for timeouts in dbus-glib.
+       
+2003-02-13  Anders Carlsson  <andersca@codefactory.se>
+
        * dbus/dbus-message-builder.c: (_dbus_message_data_load):
        * dbus/dbus-message.c: (process_test_subdir):
        * test/break-loader.c: (find_breaks_based_on):
index c5197e5..80d7d6b 100644 (file)
@@ -172,16 +172,38 @@ remove_watch (DBusWatch *watch,
   g_free (poll_fd);
 }
 
+static gboolean
+timeout_handler (gpointer data)
+{
+  DBusTimeout *timeout = data;
+
+  dbus_timeout_handle (timeout);
+
+  return FALSE;
+}
+
+
 static void
 add_timeout (DBusTimeout *timeout,
             void        *data)
 {
+  guint timeout_tag;
+
+  timeout_tag = g_timeout_add (dbus_timeout_get_interval (timeout),
+                              timeout_handler, timeout);
+  
+  dbus_timeout_set_data (timeout, GUINT_TO_POINTER (timeout_tag), NULL);
 }
 
 static void
 remove_timeout (DBusTimeout *timeout,
                void        *data)
 {
+  guint timeout_tag;
+  
+  timeout_tag = GPOINTER_TO_UINT (dbus_timeout_get_data (timeout));
+
+  g_source_remove (timeout_tag);
 }
 
 void