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
763 }763 }
764 }764 }
765 765
766 // Tell the plugin manager about our statically linked plugins766
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 }
779 767
780 PROFILE_SET_THREAD_NAME("Main Thread");768 PROFILE_SET_THREAD_NAME("Main Thread");
781 769
@@ -8763,6 +8751,21 @@ void Application::sendLambdaEvent(const std::function<void()>& f) { · 7981 unmodified lines
8763}8751}
8764 8752
8765void Application::initPlugins(const QCommandLineParser& parser) {8753void 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
8766 if (parser.isSet("display")) {8769 if (parser.isSet("display")) {
8767 auto preferredDisplays = parser.value("display").split(',', Qt::SkipEmptyParts);8770 auto preferredDisplays = parser.value("display").split(',', Qt::SkipEmptyParts);
8768 qInfo() << "Setting prefered display plugins:" << preferredDisplays;8771 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