diff options
author | Jonny Lamb <jonny.lamb@collabora.co.uk> | 2011-02-14 08:46:57 +0000 |
---|---|---|
committer | Jonny Lamb <jonny.lamb@collabora.co.uk> | 2011-02-14 08:46:57 +0000 |
commit | 2e95525443a4b9f590c52aefdf563f1dfd34bfe1 (patch) | |
tree | 45fe06f7afc20894625dce1a5613fda6a1779390 /src/plugin-loader.c | |
parent | f741f748faf61342327a4814d63a376408542909 (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.c | 32 |
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; +} |