[telepathy-mission-control/master] McdDispatcher: factor out _mcd_dispatcher_dup_client_caps

Simon McVittie simon.mcvittie at collabora.co.uk
Fri Sep 4 07:53:30 PDT 2009


---
 src/mcd-dispatcher-priv.h |    3 +++
 src/mcd-dispatcher.c      |   39 +++++++++++++++++++++++++++------------
 2 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/src/mcd-dispatcher-priv.h b/src/mcd-dispatcher-priv.h
index 9b1fc7d..23f492f 100644
--- a/src/mcd-dispatcher-priv.h
+++ b/src/mcd-dispatcher-priv.h
@@ -58,6 +58,9 @@ void _mcd_dispatcher_recover_channel (McdDispatcher *dispatcher,
 G_GNUC_INTERNAL void _mcd_dispatcher_add_connection (McdDispatcher *self,
     McdConnection *connection);
 
+G_GNUC_INTERNAL GPtrArray *_mcd_dispatcher_dup_client_caps (
+    McdDispatcher *self);
+
 G_END_DECLS
 
 #endif /* MCD_DISPATCHER_H */
diff --git a/src/mcd-dispatcher.c b/src/mcd-dispatcher.c
index ef4bbb8..bd68eb6 100644
--- a/src/mcd-dispatcher.c
+++ b/src/mcd-dispatcher.c
@@ -4042,6 +4042,32 @@ mcd_dispatcher_lost_connection (gpointer data,
     g_object_unref (self);
 }
 
+GPtrArray *
+_mcd_dispatcher_dup_client_caps (McdDispatcher *self)
+{
+    GPtrArray *vas;
+    GHashTableIter iter;
+    gpointer p;
+
+    g_return_val_if_fail (MCD_IS_DISPATCHER (self), NULL);
+
+    vas = g_ptr_array_sized_new (g_hash_table_size (self->priv->clients));
+
+    if (!self->priv->startup_completed)
+    {
+        return NULL;
+    }
+
+    g_hash_table_iter_init (&iter, self->priv->clients);
+
+    while (g_hash_table_iter_next (&iter, NULL, &p))
+    {
+        mcd_dispatcher_append_client_caps (self, p, vas);
+    }
+
+    return vas;
+}
+
 void
 _mcd_dispatcher_add_connection (McdDispatcher *self,
                                 McdConnection *connection)
@@ -4057,18 +4083,7 @@ _mcd_dispatcher_add_connection (McdDispatcher *self,
 
     if (self->priv->startup_completed)
     {
-        GHashTableIter iter;
-        gpointer p;
-        GPtrArray *vas;
-
-        vas = g_ptr_array_sized_new (g_hash_table_size (self->priv->clients));
-
-        g_hash_table_iter_init (&iter, self->priv->clients);
-
-        while (g_hash_table_iter_next (&iter, NULL, &p))
-        {
-            mcd_dispatcher_append_client_caps (self, p, vas);
-        }
+        GPtrArray *vas = _mcd_dispatcher_dup_client_caps (self);
 
         _mcd_connection_start_dispatching (connection, vas);
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list