diff --git a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp index 1b18331cb..58c3a494b 100644 --- a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp +++ b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp @@ -257,9 +257,9 @@ namespace BlackSimPlugin QString CSimulatorFsxCommon::getStatisticsSimulatorSpecific() const { - static const QString specificInfo("dispatch (cur/max): %1ms %2ms %3 %4 simData#: %5"); + static const QString specificInfo("dispatch (cur/max): %1ms (%2ms) %3ms (%4ms) %5 %6 simData#: %7"); return specificInfo. - arg(m_dispatchTimeMs).arg(m_dispatchMaxTimeMs). + arg(m_dispatchTimeMs).arg(m_dispatchProcTimeMs).arg(m_dispatchMaxTimeMs).arg(m_dispatchProcMaxTimeMs). arg(CSimConnectUtilities::simConnectReceiveIdToString(m_dispatchMaxTimeReceiveId), CSimConnectDefinitions::requestToString(m_dispatchMaxTimeRequest)). arg(m_requestSimObjectDataCount); @@ -267,7 +267,6 @@ namespace BlackSimPlugin bool CSimulatorFsxCommon::requestElevation(const ICoordinateGeodetic &reference, const CCallsign &callsign) { - Q_UNUSED(callsign); if (this->isShuttingDownOrDisconnected()) { return false; } if (reference.isNull()) { return false; } @@ -317,7 +316,9 @@ namespace BlackSimPlugin void CSimulatorFsxCommon::resetAircraftStatistics() { m_dispatchMaxTimeMs = -1; + m_dispatchProcMaxTimeMs = -1; m_dispatchTimeMs = -1; + m_dispatchProcTimeMs = -1; m_requestSimObjectDataCount = 0; m_dispatchLastReceiveId = SIMCONNECT_RECV_ID_NULL; m_dispatchMaxTimeReceiveId = SIMCONNECT_RECV_ID_NULL; @@ -963,7 +964,8 @@ namespace BlackSimPlugin const HRESULT hr = SimConnect_CallDispatch(m_hSimConnect, m_dispatchProc, this); // statistics - m_dispatchTimeMs = QDateTime::currentMSecsSinceEpoch() - start; + const qint64 end = QDateTime::currentMSecsSinceEpoch(); + m_dispatchTimeMs = end - start; if (m_dispatchMaxTimeMs < m_dispatchTimeMs) { m_dispatchMaxTimeMs = m_dispatchTimeMs; diff --git a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.h b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.h index ff8de7055..3a0ab4382 100644 --- a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.h +++ b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.h @@ -426,6 +426,8 @@ namespace BlackSimPlugin int m_dispatchErrors = 0; //!< number of dispatched failed, \sa dispatch qint64 m_dispatchTimeMs = -1; qint64 m_dispatchMaxTimeMs = -1; + qint64 m_dispatchProcTimeMs = -1; + qint64 m_dispatchProcMaxTimeMs = -1; SIMCONNECT_RECV_ID m_dispatchLastReceiveId = SIMCONNECT_RECV_ID_NULL; //!< last receive id from dispatching SIMCONNECT_RECV_ID m_dispatchMaxTimeReceiveId = SIMCONNECT_RECV_ID_NULL; //!< receive id corresponding to max.time CSimConnectDefinitions::Request m_dispatchLastRequest = CSimConnectDefinitions::RequestEndMarker; //!< request id if any diff --git a/src/plugins/simulator/fsxcommon/simulatorfsxsimconnectproc.cpp b/src/plugins/simulator/fsxcommon/simulatorfsxsimconnectproc.cpp index e5cdc2690..bb6a16442 100644 --- a/src/plugins/simulator/fsxcommon/simulatorfsxsimconnectproc.cpp +++ b/src/plugins/simulator/fsxcommon/simulatorfsxsimconnectproc.cpp @@ -36,6 +36,7 @@ namespace BlackSimPlugin // IMPORTANT: // all tasks called in this function (ie all called functions) must perform fast or shall be called asynchronously + const qint64 procTimeStart = QDateTime::currentMSecsSinceEpoch(); CSimulatorFsxCommon *simulatorFsxP3D = static_cast(pContext); const SIMCONNECT_RECV_ID recvId = static_cast(pData->dwID); simulatorFsxP3D->m_dispatchLastReceiveId = recvId; @@ -102,10 +103,10 @@ namespace BlackSimPlugin } case SystemEventPause: { - const bool p = event->dwData ? true : false; - if (simulatorFsxP3D->m_simPaused != p) + const bool paused = event->dwData ? true : false; + if (simulatorFsxP3D->m_simPaused != paused) { - simulatorFsxP3D->m_simPaused = p; + simulatorFsxP3D->m_simPaused = paused; simulatorFsxP3D->emitSimulatorCombinedStatus(); } break; @@ -354,6 +355,14 @@ namespace BlackSimPlugin default: break; } // main switch + + // performance stats + const qint64 procTimeEnd = QDateTime::currentMSecsSinceEpoch(); + simulatorFsxP3D->m_dispatchProcTimeMs = procTimeEnd - procTimeStart; + if (simulatorFsxP3D->m_dispatchProcTimeMs > simulatorFsxP3D->m_dispatchProcMaxTimeMs) + { + simulatorFsxP3D->m_dispatchProcMaxTimeMs = simulatorFsxP3D->m_dispatchProcTimeMs; + } } // method } // namespace } // namespace