diff --git a/map/traffic_manager.cpp b/map/traffic_manager.cpp index 797a1889b2..a3ec600e87 100644 --- a/map/traffic_manager.cpp +++ b/map/traffic_manager.cpp @@ -101,6 +101,7 @@ void TrafficManager::SetEnabled(bool enabled) void TrafficManager::Clear() { m_mwmCache.clear(); + m_lastMwmsByRect.clear(); m_activeMwms.clear(); m_requestedMwms.clear(); } @@ -147,6 +148,9 @@ void TrafficManager::UpdateViewport(ScreenBase const & screen) // Request traffic. auto mwms = m_getMwmsByRectFn(screen.ClipRect()); + if (m_lastMwmsByRect == mwms) + return; + m_lastMwmsByRect = mwms; { lock_guard lock(m_mutex); diff --git a/map/traffic_manager.hpp b/map/traffic_manager.hpp index d2f208a356..67dcc7d323 100644 --- a/map/traffic_manager.hpp +++ b/map/traffic_manager.hpp @@ -133,6 +133,7 @@ private: bool m_isRunning; condition_variable m_condition; + vector m_lastMwmsByRect; set m_activeMwms; vector m_requestedMwms;