Ref T372, updateAircraftInRangeDistanceBearing with null check

This commit is contained in:
Klaus Basan
2018-09-30 23:14:09 +02:00
parent 5af029467e
commit ce192fc106
2 changed files with 20 additions and 1 deletions

View File

@@ -80,7 +80,7 @@ namespace BlackMisc
CAircraftSituation CRemoteAircraftProvider::remoteAircraftSituation(const CCallsign &callsign, int index) const
{
CAircraftSituationList situations = this->remoteAircraftSituations(callsign);
const CAircraftSituationList situations = this->remoteAircraftSituations(callsign);
if (index < 0 || index >= situations.size()) { return CAircraftSituation::null(); }
return situations[index];
}
@@ -237,6 +237,20 @@ namespace BlackMisc
return c;
}
bool CRemoteAircraftProvider::updateAircraftInRangeDistanceBearing(const CCallsign &callsign, const CAircraftSituation &situation, const CLength &distance, const CAngle &bearing)
{
Q_ASSERT_X(!callsign.isEmpty(), Q_FUNC_INFO, "Missing callsign");
{
QWriteLocker l(&m_lockAircraft);
if (!m_aircraftInRange.contains(callsign)) { return false; }
CSimulatedAircraft &aircraft = m_aircraftInRange[callsign];
aircraft.setSituation(situation);
if (!bearing.isNull()) { aircraft.setRelativeBearing(bearing); }
if (!distance.isNull()) { aircraft.setRelativeDistance(distance); }
}
return true;
}
CAircraftSituation CRemoteAircraftProvider::storeAircraftSituation(const CAircraftSituation &situation, bool allowTestOffset)
{
const CCallsign cs = situation.getCallsign();

View File

@@ -414,6 +414,11 @@ namespace BlackMisc
//! \threadsafe
int updateAircraftInRange(const Aviation::CCallsign &callsign, const CPropertyIndexVariantMap &vm, bool skipEqualValues = true);
//! Update aircraft bearing, distance and situation
//! \threadsafe
//! \remark does NOT emit signals
bool updateAircraftInRangeDistanceBearing(const Aviation::CCallsign &callsign, const Aviation::CAircraftSituation &situation, const PhysicalQuantities::CLength &distance, const PhysicalQuantities::CAngle &bearing);
//! Store an aircraft situation
//! \remark latest situations are kept first
//! \threadsafe