mirror of
https://github.com/overte-org/overte.git
synced 2025-04-08 08:14:48 +02:00
Setup preferred display plugin
This commit is contained in:
parent
d8493f960a
commit
932838b1e3
3 changed files with 38 additions and 3 deletions
|
@ -2957,6 +2957,13 @@ void Application::loadSettings() {
|
|||
//DependencyManager::get<LODManager>()->setAutomaticLODAdjust(false);
|
||||
|
||||
Menu::getInstance()->loadSettings();
|
||||
|
||||
// If there is a preferred plugin, we probably messed it up with the menu settings, so fix it.
|
||||
if (auto plugin = PluginManager::getInstance()->getPreferredDisplayPlugin()) {
|
||||
Q_ASSERT(plugin == getActiveDisplayPlugin());
|
||||
Menu::getInstance()->setIsOptionChecked(plugin->getName(), true);
|
||||
}
|
||||
|
||||
getMyAvatar()->loadData();
|
||||
|
||||
_settingsLoaded = true;
|
||||
|
@ -4938,7 +4945,7 @@ void Application::postLambdaEvent(std::function<void()> f) {
|
|||
}
|
||||
|
||||
void Application::initPlugins(const QStringList& arguments) {
|
||||
QCommandLineOption display("display", "Default display", "display");
|
||||
QCommandLineOption display("display", "Preferred display", "display");
|
||||
QCommandLineOption disableDisplays("disable-displays", "Displays to disable", "display");
|
||||
QCommandLineOption disableInputs("disable-inputs", "Inputs to disable", "input");
|
||||
|
||||
|
@ -4949,8 +4956,9 @@ void Application::initPlugins(const QStringList& arguments) {
|
|||
parser.parse(arguments);
|
||||
|
||||
if (parser.isSet(display)) {
|
||||
auto defaultDisplay = parser.value(display);
|
||||
qInfo() << "Setting prefered display plugin:" << defaultDisplay;
|
||||
auto preferredDisplay = parser.value(display);
|
||||
qInfo() << "Setting prefered display plugin:" << preferredDisplay;
|
||||
PluginManager::getInstance()->setPreferredDisplayPlugin(preferredDisplay);
|
||||
}
|
||||
|
||||
if (parser.isSet(disableDisplays)) {
|
||||
|
|
|
@ -52,6 +52,7 @@ QString getPluginIIDFromMetaData(QJsonObject object) {
|
|||
return object[IID_KEY].toString();
|
||||
}
|
||||
|
||||
QString preferredDisplayPluginName;
|
||||
QStringList disabledDisplays;
|
||||
QStringList disabledInputs;
|
||||
|
||||
|
@ -177,6 +178,29 @@ const InputPluginList& PluginManager::getInputPlugins() {
|
|||
return inputPlugins;
|
||||
}
|
||||
|
||||
void PluginManager::setPreferredDisplayPlugin(const QString& display) {
|
||||
preferredDisplayPluginName = display;
|
||||
}
|
||||
|
||||
DisplayPluginPointer PluginManager::getPreferredDisplayPlugin() {
|
||||
static DisplayPluginPointer displayPlugin;
|
||||
|
||||
static std::once_flag once;
|
||||
std::call_once(once, [&] {
|
||||
// Grab the built in plugins
|
||||
auto plugins = getDisplayPlugins();
|
||||
|
||||
auto it = std::find_if(plugins.begin(), plugins.end(), [](DisplayPluginPointer plugin) {
|
||||
return plugin->getName() == preferredDisplayPluginName;
|
||||
});
|
||||
if (it != plugins.end()) {
|
||||
displayPlugin = *it;
|
||||
}
|
||||
});
|
||||
|
||||
return displayPlugin;
|
||||
}
|
||||
|
||||
|
||||
void PluginManager::disableDisplays(const QStringList& displays) {
|
||||
disabledDisplays << displays;
|
||||
|
|
|
@ -19,6 +19,9 @@ public:
|
|||
const DisplayPluginList& getDisplayPlugins();
|
||||
const InputPluginList& getInputPlugins();
|
||||
|
||||
DisplayPluginPointer getPreferredDisplayPlugin();
|
||||
|
||||
void setPreferredDisplayPlugin(const QString& display);
|
||||
void disableDisplayPlugin(const QString& name);
|
||||
void disableDisplays(const QStringList& displays);
|
||||
void disableInputs(const QStringList& inputs);
|
||||
|
|
Loading…
Reference in a new issue