mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-27 11:05:44 +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
|
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.
|
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),
|
arg(CSimConnectUtilities::simConnectReceiveIdToString(m_dispatchMaxTimeReceiveId),
|
||||||
CSimConnectDefinitions::requestToString(m_dispatchMaxTimeRequest)).
|
CSimConnectDefinitions::requestToString(m_dispatchMaxTimeRequest)).
|
||||||
arg(m_requestSimObjectDataCount);
|
arg(m_requestSimObjectDataCount);
|
||||||
@@ -267,7 +267,6 @@ namespace BlackSimPlugin
|
|||||||
|
|
||||||
bool CSimulatorFsxCommon::requestElevation(const ICoordinateGeodetic &reference, const CCallsign &callsign)
|
bool CSimulatorFsxCommon::requestElevation(const ICoordinateGeodetic &reference, const CCallsign &callsign)
|
||||||
{
|
{
|
||||||
Q_UNUSED(callsign);
|
|
||||||
if (this->isShuttingDownOrDisconnected()) { return false; }
|
if (this->isShuttingDownOrDisconnected()) { return false; }
|
||||||
if (reference.isNull()) { return false; }
|
if (reference.isNull()) { return false; }
|
||||||
|
|
||||||
@@ -317,7 +316,9 @@ namespace BlackSimPlugin
|
|||||||
void CSimulatorFsxCommon::resetAircraftStatistics()
|
void CSimulatorFsxCommon::resetAircraftStatistics()
|
||||||
{
|
{
|
||||||
m_dispatchMaxTimeMs = -1;
|
m_dispatchMaxTimeMs = -1;
|
||||||
|
m_dispatchProcMaxTimeMs = -1;
|
||||||
m_dispatchTimeMs = -1;
|
m_dispatchTimeMs = -1;
|
||||||
|
m_dispatchProcTimeMs = -1;
|
||||||
m_requestSimObjectDataCount = 0;
|
m_requestSimObjectDataCount = 0;
|
||||||
m_dispatchLastReceiveId = SIMCONNECT_RECV_ID_NULL;
|
m_dispatchLastReceiveId = SIMCONNECT_RECV_ID_NULL;
|
||||||
m_dispatchMaxTimeReceiveId = 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);
|
const HRESULT hr = SimConnect_CallDispatch(m_hSimConnect, m_dispatchProc, this);
|
||||||
|
|
||||||
// statistics
|
// statistics
|
||||||
m_dispatchTimeMs = QDateTime::currentMSecsSinceEpoch() - start;
|
const qint64 end = QDateTime::currentMSecsSinceEpoch();
|
||||||
|
m_dispatchTimeMs = end - start;
|
||||||
if (m_dispatchMaxTimeMs < m_dispatchTimeMs)
|
if (m_dispatchMaxTimeMs < m_dispatchTimeMs)
|
||||||
{
|
{
|
||||||
m_dispatchMaxTimeMs = m_dispatchTimeMs;
|
m_dispatchMaxTimeMs = m_dispatchTimeMs;
|
||||||
|
|||||||
@@ -426,6 +426,8 @@ namespace BlackSimPlugin
|
|||||||
int m_dispatchErrors = 0; //!< number of dispatched failed, \sa dispatch
|
int m_dispatchErrors = 0; //!< number of dispatched failed, \sa dispatch
|
||||||
qint64 m_dispatchTimeMs = -1;
|
qint64 m_dispatchTimeMs = -1;
|
||||||
qint64 m_dispatchMaxTimeMs = -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_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
|
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
|
CSimConnectDefinitions::Request m_dispatchLastRequest = CSimConnectDefinitions::RequestEndMarker; //!< request id if any
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ namespace BlackSimPlugin
|
|||||||
// IMPORTANT:
|
// IMPORTANT:
|
||||||
// all tasks called in this function (ie all called functions) must perform fast or shall be called asynchronously
|
// 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);
|
CSimulatorFsxCommon *simulatorFsxP3D = static_cast<CSimulatorFsxCommon *>(pContext);
|
||||||
const SIMCONNECT_RECV_ID recvId = static_cast<SIMCONNECT_RECV_ID>(pData->dwID);
|
const SIMCONNECT_RECV_ID recvId = static_cast<SIMCONNECT_RECV_ID>(pData->dwID);
|
||||||
simulatorFsxP3D->m_dispatchLastReceiveId = recvId;
|
simulatorFsxP3D->m_dispatchLastReceiveId = recvId;
|
||||||
@@ -102,10 +103,10 @@ namespace BlackSimPlugin
|
|||||||
}
|
}
|
||||||
case SystemEventPause:
|
case SystemEventPause:
|
||||||
{
|
{
|
||||||
const bool p = event->dwData ? true : false;
|
const bool paused = event->dwData ? true : false;
|
||||||
if (simulatorFsxP3D->m_simPaused != p)
|
if (simulatorFsxP3D->m_simPaused != paused)
|
||||||
{
|
{
|
||||||
simulatorFsxP3D->m_simPaused = p;
|
simulatorFsxP3D->m_simPaused = paused;
|
||||||
simulatorFsxP3D->emitSimulatorCombinedStatus();
|
simulatorFsxP3D->emitSimulatorCombinedStatus();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -354,6 +355,14 @@ namespace BlackSimPlugin
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
} // main switch
|
} // 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
|
} // method
|
||||||
} // namespace
|
} // namespace
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|||||||
Reference in New Issue
Block a user