telepathy-salut: muc-channel: do foreach over muc channel tube channels again
Jonny Lamb
jonny at kemper.freedesktop.org
Tue Aug 28 06:30:44 PDT 2012
Module: telepathy-salut
Branch: master
Commit: 4b1bccbb832805a55722f92d9cdb8ff3aa45d75d
URL: http://cgit.freedesktop.org/telepathy/telepathy-salut/commit/?id=4b1bccbb832805a55722f92d9cdb8ff3aa45d75d
Author: Jonny Lamb <jonny.lamb at collabora.co.uk>
Date: Tue May 29 13:24:09 2012 +0100
muc-channel: do foreach over muc channel tube channels again
These have been stored in the Tubes channel before. No longer!
Signed-off-by: Jonny Lamb <jonny.lamb at collabora.co.uk>
---
src/muc-channel.c | 15 +++++++++++++++
src/muc-channel.h | 3 +++
src/muc-manager.c | 32 +++++++++++---------------------
3 files changed, 29 insertions(+), 21 deletions(-)
diff --git a/src/muc-channel.c b/src/muc-channel.c
index d403a85..6af5848 100644
--- a/src/muc-channel.c
+++ b/src/muc-channel.c
@@ -1298,3 +1298,18 @@ salut_muc_channel_tube_request (SalutMucChannel *self,
return tube;
}
+void
+salut_muc_channel_foreach (SalutMucChannel *self,
+ TpExportableChannelFunc func,
+ gpointer user_data)
+{
+ SalutMucChannelPrivate *priv = self->priv;
+ GHashTableIter iter;
+ gpointer value;
+
+ g_hash_table_iter_init (&iter, priv->tubes);
+ while (g_hash_table_iter_next (&iter, NULL, &value))
+ {
+ func (TP_EXPORTABLE_CHANNEL (value), user_data);
+ }
+}
diff --git a/src/muc-channel.h b/src/muc-channel.h
index 79787af..47abcb5 100644
--- a/src/muc-channel.h
+++ b/src/muc-channel.h
@@ -93,6 +93,9 @@ gboolean salut_muc_channel_add_member (GObject *iface, TpHandle handle,
SalutTubeIface * salut_muc_channel_tube_request (SalutMucChannel *self,
GHashTable *request_properties);
+void salut_muc_channel_foreach (SalutMucChannel *self,
+ TpExportableChannelFunc func, gpointer user_data);
+
G_END_DECLS
#endif /* #ifndef __SALUT_MUC_CHANNEL_H__*/
diff --git a/src/muc-manager.c b/src/muc-manager.c
index 6e0b4b4..c6be214 100644
--- a/src/muc-manager.c
+++ b/src/muc-manager.c
@@ -271,23 +271,6 @@ salut_muc_manager_dispose (GObject *object)
/* Channel Manager interface */
-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 *channel = TP_EXPORTABLE_CHANNEL (value);
-
- data->foreach (channel, data->user_data);
-}
-
static void
salut_muc_manager_foreach_channel (TpChannelManager *iface,
TpExportableChannelFunc foreach,
@@ -295,14 +278,21 @@ salut_muc_manager_foreach_channel (TpChannelManager *iface,
{
SalutMucManager *fac = SALUT_MUC_MANAGER (iface);
SalutMucManagerPrivate *priv = SALUT_MUC_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->text_channels);
+ while (g_hash_table_iter_next (&iter, NULL, &value))
+ {
+ TpExportableChannel *chan = TP_EXPORTABLE_CHANNEL (value);
- g_hash_table_foreach (priv->text_channels, _foreach_slave, &data);
+ /* do the text channel */
+ foreach (chan, user_data);
+
+ /* now its tube channels */
+ salut_muc_channel_foreach (SALUT_MUC_CHANNEL (chan),
+ foreach, user_data);
+ }
g_hash_table_iter_init (&iter, priv->tubes_channels);
while (g_hash_table_iter_next (&iter, NULL, &value))
More information about the telepathy-commits
mailing list