Unload plugin on exit.

This commit is contained in:
morg 2021-10-12 10:37:42 +02:00
parent 12b12a8551
commit 0eab54f04f
4 changed files with 14 additions and 3 deletions

View file

@ -329,3 +329,11 @@ void PluginManager::UnloadPlugin(std::string path)
ActivePlugins[plugin_idx].loaded = false; ActivePlugins[plugin_idx].loaded = false;
} }
} }
void PluginManager::UnloadPlugins()
{
for(const OpenRGBPluginEntry& plugin_entry: ActivePlugins)
{
plugin_entry.plugin->Unload();
}
}

View file

@ -42,6 +42,8 @@ public:
void LoadPlugin(std::string path); void LoadPlugin(std::string path);
void UnloadPlugin(std::string path); void UnloadPlugin(std::string path);
void UnloadPlugins();
std::vector<OpenRGBPluginEntry> ActivePlugins; std::vector<OpenRGBPluginEntry> ActivePlugins;
private: private:

View file

@ -438,7 +438,7 @@ OpenRGBDialog2::OpenRGBDialog2(QWidget *parent) : QMainWindow(parent), ui(new Op
/*-----------------------------------------------------*\ /*-----------------------------------------------------*\
| Add the Plugins page | | Add the Plugins page |
\*-----------------------------------------------------*/ \*-----------------------------------------------------*/
AddPluginsPage(plugin_manager); AddPluginsPage();
/*-----------------------------------------------------*\ /*-----------------------------------------------------*\
| Add the E1.31 settings page | | Add the E1.31 settings page |
@ -543,11 +543,12 @@ void OpenRGBDialog2::closeEvent(QCloseEvent *event)
} }
else else
{ {
plugin_manager->UnloadPlugins();
event->accept(); event->accept();
} }
} }
void OpenRGBDialog2::AddPluginsPage(PluginManager* plugin_manager) void OpenRGBDialog2::AddPluginsPage()
{ {
/*-----------------------------------------------------*\ /*-----------------------------------------------------*\
| Create the Plugins page | | Create the Plugins page |

View file

@ -96,7 +96,7 @@ private:
void AddQMKORGBSettingsPage(); void AddQMKORGBSettingsPage();
void AddSerialSettingsPage(); void AddSerialSettingsPage();
void AddYeelightSettingsPage(); void AddYeelightSettingsPage();
void AddPluginsPage(PluginManager* plugin_manager); void AddPluginsPage();
void AddConsolePage(); void AddConsolePage();
void ClearDevicesList(); void ClearDevicesList();