Better detect simExit on FSX, dispatch error just warning in that case

This commit is contained in:
Klaus Basan
2019-05-09 18:31:40 +02:00
parent 74e7fa46b6
commit dd7930337a

View File

@@ -1407,9 +1407,10 @@ namespace BlackSimPlugin
// error handling // error handling
if (isFailure(hr)) 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 SimulatorStatus simStatus = this->getSimulatorStatus();
const bool disconnectedOrPaused = simStatus.testFlag(Disconnected) || simStatus.testFlag(Paused); const bool disconnectedOrNotSimulating = simStatus.testFlag(Disconnected) || !simStatus.testFlag(Simulating);
Q_UNUSED(disconnectedOrPaused);
m_dispatchErrors++; m_dispatchErrors++;
this->triggerAutoTraceSendId(); this->triggerAutoTraceSendId();
@@ -1417,12 +1418,14 @@ namespace BlackSimPlugin
{ {
// 2nd time, an error / avoid multiple messages // 2nd time, an error / avoid multiple messages
// idea: if it happens once ignore // 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) else if (m_dispatchErrors > 5)
{ {
// this normally happens during a FSX crash or shutdown with simconnect // 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(); this->disconnectFrom();
} }
return; return;