From 9e1f437326d42b986d155147426c2835f969f9d4 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 14 Apr 2019 20:10:16 +0200 Subject: [PATCH] Use a default simulator for emulated driver to avoid ASSERT --- src/blackmisc/simulation/simulatorinfo.cpp | 2 +- .../simulator/emulated/simulatoremulated.cpp | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/blackmisc/simulation/simulatorinfo.cpp b/src/blackmisc/simulation/simulatorinfo.cpp index 61dfd14b8..a92120261 100644 --- a/src/blackmisc/simulation/simulatorinfo.cpp +++ b/src/blackmisc/simulation/simulatorinfo.cpp @@ -321,7 +321,7 @@ namespace BlackMisc CSimulatorInfo guessDefaultSimulatorImpl() { static const CSimulatorInfo locallyInstalled(CSimulatorInfo::getLocallyInstalledSimulators()); - if (CBuildConfig::isRunningOnLinuxPlatform()) + if (CBuildConfig::isRunningOnLinuxPlatform() || CBuildConfig::isRunningOnMacOSPlatform()) { return CSimulatorInfo::xplane(); } diff --git a/src/plugins/simulator/emulated/simulatoremulated.cpp b/src/plugins/simulator/emulated/simulatoremulated.cpp index 0fc1777a3..30a7f5cb1 100644 --- a/src/plugins/simulator/emulated/simulatoremulated.cpp +++ b/src/plugins/simulator/emulated/simulatoremulated.cpp @@ -352,14 +352,21 @@ namespace BlackSimPlugin void CSimulatorEmulated::onSettingsChanged() { + if (!sApp || sApp->isShuttingDown()) { return; } const CSwiftPluginSettings settings(m_pluginSettings.get()); m_log = settings.isLoggingFunctionCalls(); - const CSimulatorInfo simulator = settings.getEmulatedSimulator(); + CSimulatorInfo simulator = settings.getEmulatedSimulator(); + if (!simulator.isSingleSimulator()) + { + // this will always be the same + simulator = CSimulatorInfo::guessDefaultSimulator(); + } + Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "need single simulator"); + const CSimulatorPluginInfoList plugins = sApp->getIContextSimulator()->getAvailableSimulatorPlugins(); const CSimulatorPluginInfo plugin = plugins.findBySimulator(simulator); - Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "need single simulator"); if (plugin.isValid()) { // ? restart driver, disconnect/reconnect @@ -386,7 +393,7 @@ namespace BlackSimPlugin }, Qt::QueuedConnection)); - m_connectionGuard.append(connect(this, &ISimulator::ownAircraftModelChanged, this, [ = ](const CAircraftModel &model) + m_connectionGuard.append(connect(this, &ISimulator::ownAircraftModelChanged, this, [ = ](const CAircraftModel & model) { if (!m_monitorWidget) return; m_monitorWidget->appendSendingCall("ownAircraftModelChanged", model.toQString());