summaryrefslogtreecommitdiffstats
path: root/glib/dbus-gmain.c
diff options
context:
space:
mode:
Diffstat (limited to 'glib/dbus-gmain.c')
-rw-r--r--glib/dbus-gmain.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/glib/dbus-gmain.c b/glib/dbus-gmain.c
index 857ee37e..f8355a3f 100644
--- a/glib/dbus-gmain.c
+++ b/glib/dbus-gmain.c
@@ -36,6 +36,8 @@ struct _DBusGSource
GHashTable *watches;
};
+static int connection_slot = -1;
+
static gboolean dbus_connection_prepare (GSource *source,
gint *timeout);
static gboolean dbus_connection_check (GSource *source);
@@ -206,6 +208,12 @@ remove_timeout (DBusTimeout *timeout,
g_source_remove (timeout_tag);
}
+static void
+free_source (GSource *source)
+{
+ g_source_destroy (source);
+}
+
void
dbus_connection_hookup_with_g_main (DBusConnection *connection)
{
@@ -228,4 +236,11 @@ dbus_connection_hookup_with_g_main (DBusConnection *connection)
NULL, NULL);
g_source_attach (source, NULL);
+
+ if (connection_slot == -1 )
+ connection_slot = dbus_connection_allocate_data_slot ();
+
+ dbus_connection_set_data (connection, connection_slot, source,
+ (DBusFreeFunction)free_source);
+
}