[Telepathy-commits] [telepathy-salut/master] salut_tubes_manager_foreach_channel: use GHashTableIter

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Thu Feb 5 04:13:39 PST 2009


---
 src/salut-tubes-manager.c |   41 ++++++++++++++---------------------------
 1 files changed, 14 insertions(+), 27 deletions(-)

diff --git a/src/salut-tubes-manager.c b/src/salut-tubes-manager.c
index 0969485..1a289ec 100644
--- a/src/salut-tubes-manager.c
+++ b/src/salut-tubes-manager.c
@@ -683,29 +683,6 @@ new_tubes_channel (SalutTubesManager *fac,
   return chan;
 }
 
-struct _ForeachData
-{
-  TpExportableChannelFunc foreach;
-  gpointer user_data;
-};
-
-static void
-_foreach_slave (gpointer key,
-                gpointer value,
-                gpointer user_data)
-{
-  struct _ForeachData *data = (struct _ForeachData *) user_data;
-  TpExportableChannel *chan = TP_EXPORTABLE_CHANNEL (value);
-
-  /* Add channels of type Channel.Type.Tubes */
-  data->foreach (chan, data->user_data);
-
-  /* Add channels of type Channel.Type.{Stream|DBus}Tube which live in the
-   * SalutTubesChannel object */
-  salut_tubes_channel_foreach (SALUT_TUBES_CHANNEL (chan), data->foreach,
-      data->user_data);
-}
-
 static void
 salut_tubes_manager_foreach_channel (TpChannelManager *manager,
                                      TpExportableChannelFunc foreach,
@@ -714,12 +691,22 @@ salut_tubes_manager_foreach_channel (TpChannelManager *manager,
   SalutTubesManager *fac = SALUT_TUBES_MANAGER (manager);
   SalutTubesManagerPrivate *priv =
     SALUT_TUBES_MANAGER_GET_PRIVATE (fac);
-  struct _ForeachData data;
+  GHashTableIter iter;
+  gpointer value;
 
-  data.user_data = user_data;
-  data.foreach = foreach;
+  g_hash_table_iter_init (&iter, priv->tubes_channels);
+  while (g_hash_table_iter_next (&iter, NULL, &value))
+  {
+    TpExportableChannel *chan = TP_EXPORTABLE_CHANNEL (value);
+
+    /* Add channels of type Channel.Type.Tubes */
+    foreach (chan, user_data);
 
-  g_hash_table_foreach (priv->tubes_channels, _foreach_slave, &data);
+    /* Add channels of type Channel.Type.{Stream|DBus}Tube which live in the
+     * SalutTubesChannel object */
+    salut_tubes_channel_foreach (SALUT_TUBES_CHANNEL (chan), foreach,
+        user_data);
+  }
 }
 
 static const gchar * const tubes_channel_fixed_properties[] = {
-- 
1.5.6.5




More information about the telepathy-commits mailing list