summaryrefslogtreecommitdiff
path: root/src/plugin-loader.c
diff options
context:
space:
mode:
authorJonny Lamb <jonny.lamb@collabora.co.uk>2011-02-14 08:46:57 +0000
committerJonny Lamb <jonny.lamb@collabora.co.uk>2011-02-14 08:46:57 +0000
commit2e95525443a4b9f590c52aefdf563f1dfd34bfe1 (patch)
tree45fe06f7afc20894625dce1a5613fda6a1779390 /src/plugin-loader.c
parentf741f748faf61342327a4814d63a376408542909 (diff)
plugin-loader: add create_channel_managers function
Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk>
Diffstat (limited to 'src/plugin-loader.c')
-rw-r--r--src/plugin-loader.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/plugin-loader.c b/src/plugin-loader.c
index 08aace9fd..ec0aa24a1 100644
--- a/src/plugin-loader.c
+++ b/src/plugin-loader.c
@@ -359,3 +359,35 @@ gabble_plugin_loader_presence_status_for_privacy_list (
return NULL;
}
+
+static void
+copy_to_other_array (gpointer data,
+ gpointer user_data)
+{
+ g_ptr_array_add (user_data, data);
+}
+
+GPtrArray *
+gabble_plugin_loader_create_channel_managers (
+ GabblePluginLoader *self,
+ TpBaseConnection *connection)
+{
+ GPtrArray *out = g_ptr_array_new ();
+ guint i;
+
+ for (i = 0; i < self->priv->plugins->len; i++)
+ {
+ GabblePlugin *plugin = g_ptr_array_index (self->priv->plugins, i);
+ GPtrArray *managers;
+
+ managers = gabble_plugin_create_channel_managers (plugin, connection);
+
+ if (managers == NULL)
+ continue;
+
+ g_ptr_array_foreach (managers, copy_to_other_array, out);
+ g_ptr_array_free (managers, TRUE);
+ }
+
+ return out;
+}