[Telepathy-commits] [telepathy-gabble/master] add gabble_olpc_gadget_manager_close_all_views

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Thu Oct 9 08:59:38 PDT 2008


---
 src/olpc-gadget-manager.c |   23 +++++++++++++++++++++++
 src/olpc-gadget-manager.h |    2 ++
 2 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/src/olpc-gadget-manager.c b/src/olpc-gadget-manager.c
index 69be183..7cd71e6 100644
--- a/src/olpc-gadget-manager.c
+++ b/src/olpc-gadget-manager.c
@@ -629,3 +629,26 @@ gabble_olpc_gadget_manager_find_buddy_activities (GabbleOlpcGadgetManager *self,
 
   return result;
 }
+
+void
+gabble_olpc_gadget_manager_close_all_views (GabbleOlpcGadgetManager *self)
+{
+  GHashTableIter iter;
+  gpointer key, value;
+
+  g_hash_table_iter_init (&iter, self->priv->channels);
+  while (g_hash_table_iter_next (&iter, &key, &value))
+    {
+      GabbleOlpcView *view = GABBLE_OLPC_VIEW (value);
+
+      /* disconnect the signal as we can't modify the hash table
+       * while we are iterating over it */
+      g_signal_handlers_disconnect_by_func (view,
+          G_CALLBACK (olpc_gadget_channel_closed_cb), self);
+
+      gabble_olpc_view_close (view);
+
+      /* remove the channel from the hash table */
+      g_hash_table_iter_remove (&iter);
+    }
+}
diff --git a/src/olpc-gadget-manager.h b/src/olpc-gadget-manager.h
index 5e05b3d..846cde8 100644
--- a/src/olpc-gadget-manager.h
+++ b/src/olpc-gadget-manager.h
@@ -68,6 +68,8 @@ GabbleOlpcView * gabble_olpc_gadget_manager_get_view (
 GPtrArray * gabble_olpc_gadget_manager_find_buddy_activities (
     GabbleOlpcGadgetManager *self, TpHandle contact);
 
+void gabble_olpc_gadget_manager_close_all_views (GabbleOlpcGadgetManager *self);
+
 G_END_DECLS
 
 #endif
-- 
1.5.6.5




More information about the Telepathy-commits mailing list