diff --git a/PluginManager.cpp b/PluginManager.cpp index d201edae..6ccad72c 100644 --- a/PluginManager.cpp +++ b/PluginManager.cpp @@ -1,4 +1,5 @@ #include "LogManager.h" +#include "filesystem.h" #include "PluginManager.h" #include "OpenRGBThemeManager.h" @@ -11,6 +12,13 @@ PluginManager::PluginManager() AddPluginCallbackArg = nullptr; RemovePluginCallbackVal = nullptr; RemovePluginCallbackArg = nullptr; + + /*-------------------------------------------------------------------------*\ + | Create OpenRGB plugins directory | + \*-------------------------------------------------------------------------*/ + std::string plugins_dir = ResourceManager::get()->GetConfigurationDirectory() + plugins_path; + + filesystem::create_directories(plugins_dir); } void PluginManager::RegisterAddPluginCallback(AddPluginCallback new_callback, void * new_callback_arg) @@ -27,15 +35,14 @@ void PluginManager::RegisterRemovePluginCallback(RemovePluginCallback new_callba void PluginManager::ScanAndLoadPlugins() { - LOG_INFO("Loading plugins"); - /*---------------------------------------------------------*\ | Get the plugins directory | | | | The plugins directory is a directory named "plugins" in | | the configuration directory | \*---------------------------------------------------------*/ - const QDir plugins_dir = QString().fromStdString(ResourceManager::get()->GetConfigurationDirectory()) + "plugins/"; + const QDir plugins_dir = QString(ResourceManager::get()->GetConfigurationDirectory().c_str()).append(plugins_path); + LOG_INFO("[PluginManager] Scanning plugin directory: %s", plugins_dir.absolutePath().toStdString().c_str()); /*---------------------------------------------------------*\ | Get a list of all files in the plugins directory | diff --git a/PluginManager.h b/PluginManager.h index 600f8d94..511e388e 100644 --- a/PluginManager.h +++ b/PluginManager.h @@ -52,4 +52,6 @@ private: RemovePluginCallback RemovePluginCallbackVal; void * RemovePluginCallbackArg; + + const char * plugins_path = "plugins/"; }; diff --git a/ResourceManager.cpp b/ResourceManager.cpp index 97b5c5b8..56fee63f 100644 --- a/ResourceManager.cpp +++ b/ResourceManager.cpp @@ -481,13 +481,6 @@ void ResourceManager::SetupConfigurationDirectory() | Create OpenRGB configuration directory if it doesn't exist | \*-------------------------------------------------------------------------*/ filesystem::create_directories(config_dir); - - /*-------------------------------------------------------------------------*\ - | Create OpenRGB plugins directory | - \*-------------------------------------------------------------------------*/ - std::string plugins_dir = config_dir + "plugins"; - - filesystem::create_directories(plugins_dir); } else { @@ -500,6 +493,26 @@ std::string ResourceManager::GetConfigurationDirectory() return(config_dir); } +void ResourceManager::SetConfigurationDirectory(std::string directory) +{ + /*-----------------------------------------------------*\ + | Ensure the directory string has a trailing slash | + \*-----------------------------------------------------*/ + const char separator = filesystem::path::preferred_separator; + + if(directory[directory.size() - 1] != separator) + { + directory += separator; + } + + config_dir = directory; + settings_manager->LoadSettings(directory + "OpenRGB.json"); + profile_manager->SetConfigurationDirectory(directory); + + rgb_controllers_sizes.clear(); + rgb_controllers_sizes = profile_manager->LoadProfileToList("sizes", true); +} + NetworkServer* ResourceManager::GetServer() { return(server); @@ -579,15 +592,6 @@ const char *ResourceManager::GetDetectionString() return (detection_string); } -void ResourceManager::SetConfigurationDirectory(std::string directory) -{ - settings_manager->LoadSettings(directory + "OpenRGB.json"); - profile_manager->SetConfigurationDirectory(directory); - - rgb_controllers_sizes.clear(); - rgb_controllers_sizes = profile_manager->LoadProfileToList("sizes", true); -} - void ResourceManager::Cleanup() { ResourceManager::get()->WaitForDeviceDetection();