Merge pull request #10814 from jherico/linux_fix_static_plugins

Fix static plugin initialization on Linux
This commit is contained in:
Seth Alves 2017-06-25 08:17:16 -07:00 committed by GitHub
commit 9ae390853c
3 changed files with 13 additions and 18 deletions

View file

@ -486,11 +486,11 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) {
Setting::init();
// Tell the plugin manager about our statically linked plugins
PluginManager::setInputPluginProvider([] { return getInputPlugins(); });
PluginManager::setDisplayPluginProvider([] { return getDisplayPlugins(); });
PluginManager::setInputPluginSettingsPersister([](const InputPluginList& plugins) { saveInputPluginSettings(plugins); });
if (auto steamClient = PluginManager::getInstance()->getSteamClientPlugin()) {
auto pluginManager = PluginManager::getInstance();
pluginManager->setInputPluginProvider([] { return getInputPlugins(); });
pluginManager->setDisplayPluginProvider([] { return getDisplayPlugins(); });
pluginManager->setInputPluginSettingsPersister([](const InputPluginList& plugins) { saveInputPluginSettings(plugins); });
if (auto steamClient = pluginManager->getSteamClientPlugin()) {
steamClient->init();
}

View file

@ -23,10 +23,6 @@
#include "InputPlugin.h"
#include "PluginLogging.h"
DisplayPluginProvider PluginManager::_displayPluginProvider = []()->DisplayPluginList { return {}; };
InputPluginProvider PluginManager::_inputPluginProvider = []()->InputPluginList { return {}; };
CodecPluginProvider PluginManager::_codecPluginProvider = []()->CodecPluginList { return {}; };
InputPluginSettingsPersister PluginManager::_inputSettingsPersister = [](const InputPluginList& list) {};
void PluginManager::setDisplayPluginProvider(const DisplayPluginProvider& provider) {
_displayPluginProvider = provider;

View file

@ -33,16 +33,15 @@ public:
void shutdown();
// Application that have statically linked plugins can expose them to the plugin manager with these function
static void setDisplayPluginProvider(const DisplayPluginProvider& provider);
static void setInputPluginProvider(const InputPluginProvider& provider);
static void setCodecPluginProvider(const CodecPluginProvider& provider);
static void setInputPluginSettingsPersister(const InputPluginSettingsPersister& persister);
void setDisplayPluginProvider(const DisplayPluginProvider& provider);
void setInputPluginProvider(const InputPluginProvider& provider);
void setCodecPluginProvider(const CodecPluginProvider& provider);
void setInputPluginSettingsPersister(const InputPluginSettingsPersister& persister);
private:
static DisplayPluginProvider _displayPluginProvider;
static InputPluginProvider _inputPluginProvider;
static CodecPluginProvider _codecPluginProvider;
static InputPluginSettingsPersister _inputSettingsPersister;
DisplayPluginProvider _displayPluginProvider { []()->DisplayPluginList { return {}; } };
InputPluginProvider _inputPluginProvider { []()->InputPluginList { return {}; } };
CodecPluginProvider _codecPluginProvider { []()->CodecPluginList { return {}; } };
InputPluginSettingsPersister _inputSettingsPersister { [](const InputPluginList& list) {} };
PluginContainer* _container { nullptr };
};