mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-30 11:55:35 +08:00
Ref T243, Ref T273, improved elevation fetching
* slightly shorter lock time * transfer elevation from last situation
This commit is contained in:
@@ -194,10 +194,6 @@ namespace BlackMisc
|
||||
{
|
||||
const CCallsign cs = situation.getCallsign();
|
||||
if (cs.isEmpty()) { return; }
|
||||
const qint64 ts = QDateTime::currentMSecsSinceEpoch();
|
||||
|
||||
// for testing only
|
||||
const CAircraftSituation situationOffset(this->testAddAltitudeOffsetToSituation(situation));
|
||||
|
||||
// verify
|
||||
if (CBuildConfig::isLocalDeveloperDebugBuild())
|
||||
@@ -205,7 +201,12 @@ namespace BlackMisc
|
||||
BLACK_VERIFY_X(situation.getTimeOffsetMs() > 0, Q_FUNC_INFO, "Missing offset");
|
||||
}
|
||||
|
||||
// add offset (for testing only)
|
||||
CAircraftSituation situationCorrected(this->testAddAltitudeOffsetToSituation(situation));
|
||||
|
||||
// list from new to old
|
||||
const qint64 ts = QDateTime::currentMSecsSinceEpoch();
|
||||
{
|
||||
QWriteLocker lock(&m_lockSituations);
|
||||
m_situationsAdded++;
|
||||
m_situationsLastModified[cs] = ts;
|
||||
@@ -213,18 +214,19 @@ namespace BlackMisc
|
||||
const int situations = situationList.size();
|
||||
if (situations < 1)
|
||||
{
|
||||
situationList.prefillLatestAdjustedFirst(situationOffset, IRemoteAircraftProvider::MaxSituationsPerCallsign);
|
||||
situationList.prefillLatestAdjustedFirst(situationCorrected, IRemoteAircraftProvider::MaxSituationsPerCallsign);
|
||||
}
|
||||
else
|
||||
{
|
||||
situationList.push_frontKeepLatestFirstAdjustOffset(situationOffset, IRemoteAircraftProvider::MaxSituationsPerCallsign);
|
||||
}
|
||||
situationList.front().transferGroundElevation(situationCorrected); // transfer last situation if possible
|
||||
situationList.push_frontKeepLatestFirstAdjustOffset(situationCorrected, IRemoteAircraftProvider::MaxSituationsPerCallsign);
|
||||
|
||||
// unify all inbound ground information
|
||||
if (situation.hasInboundGroundDetails())
|
||||
{
|
||||
situationList.setOnGroundDetails(situation.getOnGroundDetails());
|
||||
}
|
||||
}
|
||||
|
||||
// check sort order
|
||||
if (CBuildConfig::isLocalDeveloperDebugBuild())
|
||||
@@ -232,8 +234,9 @@ namespace BlackMisc
|
||||
BLACK_VERIFY_X(situationList.isSortedAdjustedLatestFirstWithoutNullPositions(), Q_FUNC_INFO, "wrong sort order");
|
||||
BLACK_VERIFY_X(situationList.size() <= IRemoteAircraftProvider::MaxSituationsPerCallsign, Q_FUNC_INFO, "Wrong size");
|
||||
}
|
||||
} // lock
|
||||
|
||||
emit this->addedAircraftSituation(situation);
|
||||
emit this->addedAircraftSituation(situationCorrected);
|
||||
}
|
||||
|
||||
void CRemoteAircraftProvider::storeAircraftParts(const CCallsign &callsign, const CAircraftParts &parts, bool removeOutdated)
|
||||
@@ -258,7 +261,7 @@ namespace BlackMisc
|
||||
// check sort order
|
||||
Q_ASSERT_X(partsList.isSortedAdjustedLatestFirst(), Q_FUNC_INFO, "wrong sort order");
|
||||
Q_ASSERT_X(partsList.size() <= IRemoteAircraftProvider::MaxPartsPerCallsign, Q_FUNC_INFO, "Wrong size");
|
||||
}
|
||||
} // lock
|
||||
|
||||
// adjust gnd.flag from parts
|
||||
if (!correctiveParts.isEmpty())
|
||||
|
||||
Reference in New Issue
Block a user