aboutsummaryrefslogtreecommitdiff
path: root/base/plugins.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'base/plugins.cpp')
-rw-r--r--base/plugins.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/base/plugins.cpp b/base/plugins.cpp
index f4d18efb1c..55c99b1eda 100644
--- a/base/plugins.cpp
+++ b/base/plugins.cpp
@@ -379,6 +379,30 @@ void PluginManager::loadAllPlugins() {
}
}
+void PluginManager::loadAllPluginsOfType(PluginType type) {
+ for (ProviderList::iterator pp = _providers.begin();
+ pp != _providers.end();
+ ++pp) {
+ PluginList pl((*pp)->getPlugins());
+ for (PluginList::iterator p = pl.begin();
+ p != pl.end();
+ ++p) {
+ if ((*p)->loadPlugin()) {
+ if ((*p)->getType() == type) {
+ addToPluginsInMemList((*p));
+ } else {
+ // Plugin is wrong type
+ (*p)->unloadPlugin();
+ delete (*p);
+ }
+ } else {
+ // Plugin did not load
+ delete (*p);
+ }
+ }
+ }
+}
+
void PluginManager::unloadAllPlugins() {
for (int i = 0; i < PLUGIN_TYPE_MAX; i++)
unloadPluginsExcept((PluginType)i, NULL);