History

Fix crash when starting with --display, --disable-displays or --disable-inputs

This happens because the PluginManager doesn't exist yet at the time when these options are handled. Fix this by moving PluginManager initialization to an earlier stage of the code.

Dale Glass committed 3 years ago

Commit 8fa46e21 parent 77af9f21 file · +16 −13Browse files

Showing the changes to interface/src/Application.cpp (1 of 1 file). Show all

Unified · Split

interface/src/Application.cpp+16−13
@@ -763,19 +763,7 @@ bool setupEssentials(int& argc, char** argv, const QCommandLineParser& parser, b · 762 unmodified lines
763763 }
764764 }
765765
766− // Tell the plugin manager about our statically linked plugins
767− DependencyManager::set<ScriptInitializers>();
768− DependencyManager::set<PluginManager>();
769− auto pluginManager = PluginManager::getInstance();
770− pluginManager->setInputPluginProvider([] { return getInputPlugins(); });
771− pluginManager->setDisplayPluginProvider([] { return getDisplayPlugins(); });
772− pluginManager->setInputPluginSettingsPersister([](const InputPluginList& plugins) { saveInputPluginSettings(plugins); });
773− if (auto steamClient = pluginManager->getSteamClientPlugin()) {
774− steamClient->init();
775− }
776− if (auto oculusPlatform = pluginManager->getOculusPlatformPlugin()) {
777− oculusPlatform->init();
778− }
766+
779767
780768 PROFILE_SET_THREAD_NAME("Main Thread");
781769
@@ -8763,6 +8751,21 @@ void Application::sendLambdaEvent(const std::function<void()>& f) { · 7981 unmodified lines
87638751 }
87648752
87658753 void Application::initPlugins(const QCommandLineParser& parser) {
8754+ // Tell the plugin manager about our statically linked plugins
8755+ DependencyManager::set<ScriptInitializers>();
8756+ DependencyManager::set<PluginManager>();
8757+ auto pluginManager = PluginManager::getInstance();
8758+ pluginManager->setInputPluginProvider([] { return getInputPlugins(); });
8759+ pluginManager->setDisplayPluginProvider([] { return getDisplayPlugins(); });
8760+ pluginManager->setInputPluginSettingsPersister([](const InputPluginList& plugins) { saveInputPluginSettings(plugins); });
8761+ if (auto steamClient = pluginManager->getSteamClientPlugin()) {
8762+ steamClient->init();
8763+ }
8764+ if (auto oculusPlatform = pluginManager->getOculusPlatformPlugin()) {
8765+ oculusPlatform->init();
8766+ }
8767+
8768+
87668769 if (parser.isSet("display")) {
87678770 auto preferredDisplays = parser.value("display").split(',', Qt::SkipEmptyParts);
87688771 qInfo() << "Setting prefered display plugins:" << preferredDisplays;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t