diff options
author | r.kuznetsov <r.kuznetsov@corp.mail.ru> | 2016-12-07 10:28:38 +0300 |
---|---|---|
committer | r.kuznetsov <r.kuznetsov@corp.mail.ru> | 2016-12-07 12:47:26 +0300 |
commit | 17d3a0abb9e424315f50f676c61b7218236e6a78 (patch) | |
tree | 8d799ab298ec17a1900d091f0662e8102d393e3e /map | |
parent | fce37cc9a0483aed41aaa15ad5b20ee64bd4c3e0 (diff) |
Fixed freeze on traffic turning on
Diffstat (limited to 'map')
-rw-r--r-- | map/traffic_manager.cpp | 4 | ||||
-rw-r--r-- | map/traffic_manager.hpp | 1 |
2 files changed, 5 insertions, 0 deletions
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<mutex> 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<MwmSet::MwmId> m_lastMwmsByRect; set<MwmSet::MwmId> m_activeMwms; vector<MwmSet::MwmId> m_requestedMwms; |