diff --git a/libs/map/gps_track.cpp b/libs/map/gps_track.cpp index b39577d89..5ecbb5e5d 100644 --- a/libs/map/gps_track.cpp +++ b/libs/map/gps_track.cpp @@ -50,15 +50,20 @@ void GpsTrack::AddPoints(vector const & points) ScheduleTask(); } -TrackStatistics GpsTrack::GetTrackStatistics() const +/// @note These functions are called during recording, so should be synchronized with Collection writer thread. +/// @{ +TrackStatistics GpsTrack::GetTrackStatistics() { + lock_guard lg(m_threadGuard); return m_collection ? m_collection->GetTrackStatistics() : TrackStatistics(); } -ElevationInfo const & GpsTrack::GetElevationInfo() const +ElevationInfo const & GpsTrack::GetElevationInfo() { + lock_guard lg(m_threadGuard); return m_collection->UpdateAndGetElevationInfo(); } +/// @} void GpsTrack::Clear() { diff --git a/libs/map/gps_track.hpp b/libs/map/gps_track.hpp index 493ee0c14..edfaa5790 100644 --- a/libs/map/gps_track.hpp +++ b/libs/map/gps_track.hpp @@ -31,8 +31,8 @@ public: void AddPoints(std::vector const & points); /// Returns track statistics - TrackStatistics GetTrackStatistics() const; - ElevationInfo const & GetElevationInfo() const; + TrackStatistics GetTrackStatistics(); + ElevationInfo const & GetElevationInfo(); /// Clears any previous tracking info /// @note Callback is called with 'toRemove' points, if some points were removed. diff --git a/libs/map/gps_tracker.cpp b/libs/map/gps_tracker.cpp index da29ebfdd..f1feeb03d 100644 --- a/libs/map/gps_tracker.cpp +++ b/libs/map/gps_tracker.cpp @@ -68,12 +68,12 @@ bool GpsTracker::IsEmpty() const return m_track.IsEmpty(); } -TrackStatistics GpsTracker::GetTrackStatistics() const +TrackStatistics GpsTracker::GetTrackStatistics() { return m_track.GetTrackStatistics(); } -ElevationInfo const & GpsTracker::GetElevationInfo() const +ElevationInfo const & GpsTracker::GetElevationInfo() { return m_track.GetElevationInfo(); } diff --git a/libs/map/gps_tracker.hpp b/libs/map/gps_tracker.hpp index f0b5cdf36..a72d2bd3d 100644 --- a/libs/map/gps_tracker.hpp +++ b/libs/map/gps_tracker.hpp @@ -17,8 +17,8 @@ public: bool IsEmpty() const; - TrackStatistics GetTrackStatistics() const; - ElevationInfo const & GetElevationInfo() const; + TrackStatistics GetTrackStatistics(); + ElevationInfo const & GetElevationInfo(); using TGpsTrackDiffCallback = std::function> && toAdd,