From ad612cbd2792efedc94beb4872967560433d555f Mon Sep 17 00:00:00 2001 From: Vladimir Byko-Ianko Date: Thu, 8 Sep 2016 18:17:41 +0300 Subject: Better implementation for chart generation in multithreading envierment. --- routing/routing_session.cpp | 14 ++++---------- routing/routing_session.hpp | 10 +++++----- 2 files changed, 9 insertions(+), 15 deletions(-) (limited to 'routing') diff --git a/routing/routing_session.cpp b/routing/routing_session.cpp index affe26a4f0..eee15c3cb4 100644 --- a/routing/routing_session.cpp +++ b/routing/routing_session.cpp @@ -534,21 +534,15 @@ bool RoutingSession::HasRouteAltitude() const return HasRouteAltitudeImpl(); } -bool RoutingSession::GetRouteAltitudes(feature::TAltitudes & routeAltitudes) const +bool RoutingSession::GetRouteAltitudesAndDistancesM(vector & routeSegDistanceM, + feature::TAltitudes & routeAltitudesM) const { threads::MutexGuard guard(m_routeSessionMutex); - if (!HasRouteAltitudeImpl()) + if (!m_route.IsValid() || !HasRouteAltitudeImpl()) return false; - routeAltitudes.assign(m_route.GetAltitudes().begin(), m_route.GetAltitudes().end()); - return true; -} -bool RoutingSession::GetSegDistanceM(vector & routeSegDistanceM) const -{ - threads::MutexGuard guard(m_routeSessionMutex); - if (!m_route.IsValid()) - return false; routeSegDistanceM = m_route.GetSegDistanceM(); + routeAltitudesM.assign(m_route.GetAltitudes().cbegin(), m_route.GetAltitudes().cend()); return true; } diff --git a/routing/routing_session.hpp b/routing/routing_session.hpp index 9156ab53ae..d10d637c01 100644 --- a/routing/routing_session.hpp +++ b/routing/routing_session.hpp @@ -108,12 +108,12 @@ public: /// \returns true if altitude information along |m_route| is available and /// false otherwise. bool HasRouteAltitude() const; - /// \brief copies route altitude information to |routeAltitudes| if any is available and - /// returns true. If there's no navigation route, the method returns false. - bool GetRouteAltitudes(feature::TAltitudes & routeAltitudes) const; + /// \brief copies distance from route beginning to ends of route segments in meters and - /// returns true. If the route is not valid returns false. - bool GetSegDistanceM(vector & routeSegDistanceM) const; + /// route altitude information to |routeSegDistanceM| and |routeAltitudes|. + /// \returns true if there is valid route information. If the route is not valid returns false. + bool GetRouteAltitudesAndDistancesM(vector & routeSegDistanceM, + feature::TAltitudes & routeAltitudesM) const; State OnLocationPositionChanged(location::GpsInfo const & info, Index const & index); void GetRouteFollowingInfo(location::FollowingInfo & info) const; -- cgit v1.2.3