summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/settings.cpp10
-rw-r--r--src/settings.h3
2 files changed, 12 insertions, 1 deletions
diff --git a/src/settings.cpp b/src/settings.cpp
index d325c02f..85aa5f2f 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -1317,6 +1317,16 @@ void PluginSettings::registerPlugin(IPlugin *plugin)
}
}
+void PluginSettings::unregisterPlugin(IPlugin* plugin)
+{
+ auto it = std::find(m_Plugins.begin(), m_Plugins.end(), plugin);
+ if (it != m_Plugins.end()) {
+ m_Plugins.erase(it);
+ }
+ m_PluginSettings.remove(plugin->name());
+ m_PluginDescriptions.remove(plugin->name());
+}
+
std::vector<MOBase::IPlugin*> PluginSettings::plugins() const
{
return m_Plugins;
diff --git a/src/settings.h b/src/settings.h
index 122eb729..48aefc27 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -304,9 +304,10 @@ public:
//
void clearPlugins();
- // adds the given plugin to the list and loads all of its settings
+ // adds/removes the given plugin to the list and loads all of its settings
//
void registerPlugin(MOBase::IPlugin *plugin);
+ void unregisterPlugin(MOBase::IPlugin* plugin);
// returns all the registered plugins
//