mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-31 04:25:35 +08:00
Ref T280, FSX/P3D also measure time of inner SimConnectProc to see if SimConnect_CallDispatch has any influence
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user