From dd7930337a05f66b7748ffec49a101e6edc0e7fb Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 9 May 2019 18:31:40 +0200 Subject: [PATCH] Better detect simExit on FSX, dispatch error just warning in that case --- .../simulator/fsxcommon/simulatorfsxcommon.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp index fa53cd6e9..f45d0ef5d 100644 --- a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp +++ b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp @@ -1407,9 +1407,10 @@ namespace BlackSimPlugin // error handling if (isFailure(hr)) { + // on FSX we normally receive this one here when simulator goes down, and NOT onSimExit + // in that case sim status is Connected, but not PAUSED or SIMULATING const SimulatorStatus simStatus = this->getSimulatorStatus(); - const bool disconnectedOrPaused = simStatus.testFlag(Disconnected) || simStatus.testFlag(Paused); - Q_UNUSED(disconnectedOrPaused); + const bool disconnectedOrNotSimulating = simStatus.testFlag(Disconnected) || !simStatus.testFlag(Simulating); m_dispatchErrors++; this->triggerAutoTraceSendId(); @@ -1417,12 +1418,14 @@ namespace BlackSimPlugin { // 2nd time, an error / avoid multiple messages // idea: if it happens once ignore - CLogMessage(this).error(u"%1: Dispatch error, sim.status: %2") << this->getSimulatorPluginInfo().getIdentifier() << ISimulator::statusToString(simStatus); + const QString msg = QStringLiteral(u"%1: Dispatch error, sim.status: %2").arg(this->getSimulatorPluginInfo().getIdentifier(), ISimulator::statusToString(simStatus)); + CLogMessage(this).log(disconnectedOrNotSimulating ? CStatusMessage::SeverityWarning : CStatusMessage::SeverityError, msg); } else if (m_dispatchErrors > 5) { // this normally happens during a FSX crash or shutdown with simconnect - CLogMessage(this).error(u"%1: Multiple dispatch errors, disconnecting. Sim.status: %2") << this->getSimulatorPluginInfo().getIdentifier() << ISimulator::statusToString(simStatus); + const QString msg = QStringLiteral(u"%1: Multiple dispatch errors, disconnecting. Sim.status: %2").arg(this->getSimulatorPluginInfo().getIdentifier(), ISimulator::statusToString(simStatus)); + CLogMessage(this).log(disconnectedOrNotSimulating ? CStatusMessage::SeverityWarning : CStatusMessage::SeverityError, msg); this->disconnectFrom(); } return;