Avoid ASSERT from emulated driver

* not all plugins are installed
* use default simulator if there is no simulator info
This commit is contained in:
Klaus Basan
2019-05-25 23:14:33 +02:00
parent e7428d5797
commit f33ffc32be
2 changed files with 18 additions and 1 deletions

View File

@@ -447,7 +447,20 @@ namespace BlackCore
this->setRemoteAircraftProvider(renderedAircraftProvider);
// use simulator info from ISimulator as it can access the emulated driver settings
const CSimulatorInfo simInfo = simulator->getSimulatorInfo();
CSimulatorInfo simInfo = simulator->getSimulatorInfo();
if (!simInfo.isSingleSimulator())
{
BLACK_VERIFY_X(false, Q_FUNC_INFO, "Invalid simulator from plugin");
simInfo = CSimulatorInfo::p3d();
if (simulator->isEmulatedDriver())
{
CLogMessage(this).error(u"Emulated driver does NOT provide valid simulator, using default '%1', plugin: '%2'") << simInfo.toQString(true) << simulatorPluginInfo.toQString(true);
}
else
{
CLogMessage(this).error(u"Invalid driver using default '%1', plugin: '%2'") << simInfo.toQString(true) << simulatorPluginInfo.toQString(true);
}
}
Q_ASSERT_X(simInfo.isSingleSimulator(), Q_FUNC_INFO, "need single simulator");
m_modelSetSimulator.set(simInfo);

View File

@@ -384,7 +384,11 @@ namespace BlackSimPlugin
}
else
{
// not all drivers are installed
CLogMessage(this).validationError(u"No valid plugin for '%1'") << simulator.toQString();
const QString sn = simulator.toQString(true);
const CSimulatorPluginInfo faked = CSimulatorPluginInfo(simulator.toPluginIdentifier(), sn, sn, QStringLiteral("Emulated, but uninstalled '%1'").arg(sn), false);
this->setNewPluginInfo(faked, settings.getDefaultModel());
}
// update provider, own name, title