[empathy/gnome-2-28-candidate: 4/5] Dispatch existing channels once we initialize the connection.



commit 4b07375a33b88333d9920afe408775c8b2084f31
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Tue Sep 15 15:33:54 2009 +0200

    Dispatch existing channels once we initialize the connection.

 libempathy/empathy-dispatcher.c |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)
---
diff --git a/libempathy/empathy-dispatcher.c b/libempathy/empathy-dispatcher.c
index 18647e4..0cd490b 100644
--- a/libempathy/empathy-dispatcher.c
+++ b/libempathy/empathy-dispatcher.c
@@ -748,6 +748,7 @@ dispatcher_connection_got_all (TpProxy *proxy,
   EmpathyDispatcher *dispatcher = EMPATHY_DISPATCHER (object);
   EmpathyDispatcherPriv *priv = GET_PRIV (dispatcher);
   GPtrArray *requestable_channels;
+  GPtrArray *existing_channels;
 
   if (error) {
     DEBUG ("Error: %s", error->message);
@@ -792,6 +793,26 @@ dispatcher_connection_got_all (TpProxy *proxy,
 
       g_hash_table_remove (priv->outstanding_classes_requests, proxy);
     }
+
+  existing_channels = tp_asv_get_boxed (properties,
+      "Channels", TP_ARRAY_TYPE_CHANNEL_DETAILS_LIST);
+
+  if (existing_channels != NULL)
+    {
+      int idx;
+
+      for (idx = 0; idx < existing_channels->len; idx++)
+        {
+          GValueArray *values = g_ptr_array_index (existing_channels, idx);
+          const gchar *object_path;
+          GHashTable *properties;
+
+          object_path = g_value_get_boxed (g_value_array_get_nth (values, 0));
+          properties = g_value_get_boxed (g_value_array_get_nth (values, 1));
+          dispatcher_connection_new_channel_with_properties (dispatcher,
+              TP_CONNECTION (proxy), object_path, properties);
+        }
+    }
 }
 
 static void



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