[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