From 0eab54f04f542ac670673d6d35274b3452e66b42 Mon Sep 17 00:00:00 2001 From: morg Date: Tue, 12 Oct 2021 10:37:42 +0200 Subject: [PATCH] Unload plugin on exit. --- PluginManager.cpp | 8 ++++++++ PluginManager.h | 2 ++ qt/OpenRGBDialog2.cpp | 5 +++-- qt/OpenRGBDialog2.h | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/PluginManager.cpp b/PluginManager.cpp index 68699df5..f430a203 100644 --- a/PluginManager.cpp +++ b/PluginManager.cpp @@ -329,3 +329,11 @@ void PluginManager::UnloadPlugin(std::string path) ActivePlugins[plugin_idx].loaded = false; } } + +void PluginManager::UnloadPlugins() +{ + for(const OpenRGBPluginEntry& plugin_entry: ActivePlugins) + { + plugin_entry.plugin->Unload(); + } +} diff --git a/PluginManager.h b/PluginManager.h index f96af050..53db9afd 100644 --- a/PluginManager.h +++ b/PluginManager.h @@ -42,6 +42,8 @@ public: void LoadPlugin(std::string path); void UnloadPlugin(std::string path); + void UnloadPlugins(); + std::vector ActivePlugins; private: diff --git a/qt/OpenRGBDialog2.cpp b/qt/OpenRGBDialog2.cpp index be209058..5d695b10 100644 --- a/qt/OpenRGBDialog2.cpp +++ b/qt/OpenRGBDialog2.cpp @@ -438,7 +438,7 @@ OpenRGBDialog2::OpenRGBDialog2(QWidget *parent) : QMainWindow(parent), ui(new Op /*-----------------------------------------------------*\ | Add the Plugins page | \*-----------------------------------------------------*/ - AddPluginsPage(plugin_manager); + AddPluginsPage(); /*-----------------------------------------------------*\ | Add the E1.31 settings page | @@ -543,11 +543,12 @@ void OpenRGBDialog2::closeEvent(QCloseEvent *event) } else { + plugin_manager->UnloadPlugins(); event->accept(); } } -void OpenRGBDialog2::AddPluginsPage(PluginManager* plugin_manager) +void OpenRGBDialog2::AddPluginsPage() { /*-----------------------------------------------------*\ | Create the Plugins page | diff --git a/qt/OpenRGBDialog2.h b/qt/OpenRGBDialog2.h index 7488a74d..fc631f9f 100644 --- a/qt/OpenRGBDialog2.h +++ b/qt/OpenRGBDialog2.h @@ -96,7 +96,7 @@ private: void AddQMKORGBSettingsPage(); void AddSerialSettingsPage(); void AddYeelightSettingsPage(); - void AddPluginsPage(PluginManager* plugin_manager); + void AddPluginsPage(); void AddConsolePage(); void ClearDevicesList();