diff --git a/map/framework.cpp b/map/framework.cpp index 2852778a82..e958a697e4 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -609,6 +609,7 @@ bool Framework::OnCountryFileDelete(storage::TCountryId const & countryId, stora auto const mwmId = m_model.GetDataSource().GetMwmIdByCountryFile(localFile->GetCountryFile()); m_model.DeregisterMap(platform::CountryFile(countryId)); deferredDelete = true; + // Notify managers in case of mwm deletion. m_localAdsManager.OnMwmDeregistered(mwmId); m_transitManager.OnMwmDeregistered(mwmId); m_trafficManager.OnMwmDeregistered(mwmId); @@ -626,6 +627,15 @@ void Framework::OnMapDeregistered(platform::LocalCountryFile const & localFile) m_storage.DeleteCustomCountryVersion(localFile); }; + auto const mwmId = m_model.GetDataSource().GetMwmIdByCountryFile(localFile.GetCountryFile()); + if (mwmId.GetInfo()) + { + // Notify managers in case of mwm updating. + m_localAdsManager.OnMwmDeregistered(mwmId); + m_transitManager.OnMwmDeregistered(mwmId); + m_trafficManager.OnMwmDeregistered(mwmId); + } + // Call action on thread in which the framework was created // For more information look at comment for Observer class in mwm_set.hpp if (m_storage.GetThreadChecker().CalledOnOriginalThread()) diff --git a/map/traffic_manager.cpp b/map/traffic_manager.cpp index 2551f86d2e..ee86e25dad 100644 --- a/map/traffic_manager.cpp +++ b/map/traffic_manager.cpp @@ -149,7 +149,6 @@ void TrafficManager::OnMwmDeregistered(MwmSet::MwmId const & mwmId) lock_guard lock(m_mutex); ClearCache(mwmId); } - Invalidate(); } void TrafficManager::OnDestroyGLContext() @@ -447,6 +446,10 @@ void TrafficManager::ClearCache(MwmSet::MwmId const & mwmId) } m_mwmCache.erase(it); m_trafficETags.erase(mwmId); + m_activeDrapeMwms.erase(mwmId); + m_activeRoutingMwms.erase(mwmId); + m_lastDrapeMwmsByRect.clear(); + m_lastRoutingMwmsByRect.clear(); } bool TrafficManager::IsEnabled() const