Ref T280, FSX/P3D also measure time of inner SimConnectProc to see if SimConnect_CallDispatch has any influence

This commit is contained in:
Klaus Basan
2018-06-18 02:17:13 +02:00
parent 4a46974cb5
commit d864789890
3 changed files with 20 additions and 7 deletions

View File

@@ -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;

View File

@@ -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

View File

@@ -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<CSimulatorFsxCommon *>(pContext);
const SIMCONNECT_RECV_ID recvId = static_cast<SIMCONNECT_RECV_ID>(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