telepathy-idle: MUCManager: simplify foreach_channel

Jonny Lamb jonny at kemper.freedesktop.org
Wed May 16 10:45:08 PDT 2012


Module: telepathy-idle
Branch: master
Commit: af091b3540daf716d7cbe080bf903f7c84e3b520
URL:    http://cgit.freedesktop.org/telepathy/telepathy-idle/commit/?id=af091b3540daf716d7cbe080bf903f7c84e3b520

Author: Will Thompson <will.thompson at collabora.co.uk>
Date:   Fri Sep  9 12:10:06 2011 +0100

MUCManager: simplify foreach_channel

---

 src/idle-muc-manager.c |   41 +++++++++++++++++++++--------------------
 1 files changed, 21 insertions(+), 20 deletions(-)

diff --git a/src/idle-muc-manager.c b/src/idle-muc-manager.c
index 6bcc92c..7a02552 100644
--- a/src/idle-muc-manager.c
+++ b/src/idle-muc-manager.c
@@ -572,26 +572,27 @@ static void _muc_manager_add_handlers(IdleMUCManager *manager)
 	idle_parser_add_handler(priv->conn->parser, IDLE_PARSER_PREFIXCMD_TOPIC, _topic_handler, manager);
 }
 
-struct _ForeachHelperData {
-	TpExportableChannelFunc func;
-	gpointer user_data;
-};
-
-static void _foreach_helper(gpointer key, gpointer value, gpointer user_data) {
-	struct _ForeachHelperData *data = user_data;
-	data->func(value, data->user_data);
-}
-
-static void _muc_manager_foreach_channel(TpChannelManager *iface, TpExportableChannelFunc func, gpointer user_data) {
-	IdleMUCManagerPrivate *priv = IDLE_MUC_MANAGER_GET_PRIVATE(iface);
-	struct _ForeachHelperData data = {func, user_data};
+static void
+_muc_manager_foreach_channel (
+    TpChannelManager *iface,
+    TpExportableChannelFunc func,
+    gpointer user_data)
+{
+  IdleMUCManagerPrivate *priv = IDLE_MUC_MANAGER_GET_PRIVATE (iface);
 
-	if (!priv->channels) {
-		IDLE_DEBUG("Channels hash table missing, ignoring...");
-		return;
-	}
+  if (priv->channels == NULL)
+    {
+      IDLE_DEBUG ("Channels hash table missing, ignoring...");
+    }
+  else
+    {
+      GHashTableIter iter;
+      gpointer v;
 
-	g_hash_table_foreach(priv->channels, _foreach_helper, &data);
+      g_hash_table_iter_init (&iter, priv->channels);
+      while (g_hash_table_iter_next (&iter, NULL, &v))
+        func (TP_EXPORTABLE_CHANNEL (v), user_data);
+    }
 }
 
 static void



More information about the telepathy-commits mailing list