diff --git a/map/framework.cpp b/map/framework.cpp index 3b349856ae..120393d846 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -605,10 +605,10 @@ bool Framework::OnCountryFileDelete(storage::TCountryId const & countryId, stora bool deferredDelete = false; if (localFile) { + m_localAdsManager.OnDeleteCountry(countryId); rect = m_infoGetter->GetLimitRectForLeaf(countryId); m_model.DeregisterMap(platform::CountryFile(countryId)); deferredDelete = true; - m_localAdsManager.OnDeleteCountry(countryId); } InvalidateRect(rect); diff --git a/map/local_ads_manager.cpp b/map/local_ads_manager.cpp index b4c6aed5e8..900ddb497b 100644 --- a/map/local_ads_manager.cpp +++ b/map/local_ads_manager.cpp @@ -327,17 +327,17 @@ void LocalAdsManager::UpdateViewport(ScreenBase const & screen) return; // Request local ads campaigns. - GetPlatform().RunTask(Platform::Thread::File, [this, mwms = std::move(mwms)]() mutable + GetPlatform().RunTask(Platform::Thread::File, [this, mwms = std::move(mwms)]() { - RequestCampaigns(std::move(mwms)); + RequestCampaigns(mwms); }); } -void LocalAdsManager::RequestCampaigns(std::vector && mwmIds) +void LocalAdsManager::RequestCampaigns(std::vector const & mwmIds) { auto const connectionStatus = GetPlatform().ConnectionStatus(); - std::vector requestedCampaigns; + std::vector requestedCampaigns; { std::lock_guard lock(m_campaignsMutex); for (auto const & mwm : mwmIds) @@ -360,7 +360,7 @@ void LocalAdsManager::RequestCampaigns(std::vector && mwmIds) auto campaignIt = m_campaigns.find(mwmName); if (campaignIt == m_campaigns.end()) { - requestedCampaigns.push_back(mwmName); + requestedCampaigns.push_back(mwm); m_downloadingMwms.insert(mwm); continue; } @@ -375,7 +375,7 @@ void LocalAdsManager::RequestCampaigns(std::vector && mwmIds) if (needUpdateByTimeout || it == m_info.end()) { - requestedCampaigns.push_back(mwmName); + requestedCampaigns.push_back(mwm); m_downloadingMwms.insert(mwm); } } @@ -387,7 +387,7 @@ void LocalAdsManager::RequestCampaigns(std::vector && mwmIds) std::set requests; for (auto const & campaign : requestedCampaigns) - requests.insert(std::make_pair(m_getMwmIdByNameFn(campaign), RequestType::Download)); + requests.insert(std::make_pair(campaign, RequestType::Download)); ProcessRequests(std::move(requests)); } @@ -448,9 +448,9 @@ void LocalAdsManager::ProcessRequests(std::set && requests) for (auto const & request : requests) { auto const & mwm = request.first; - auto const & type = request.second; + auto const & type = request.second; - if (!mwm.IsAlive()) + if (!mwm.GetInfo()) continue; std::string const & countryName = mwm.GetInfo()->GetCountryName(); @@ -507,9 +507,10 @@ void LocalAdsManager::OnDownloadCountry(std::string const & countryName) void LocalAdsManager::OnDeleteCountry(std::string const & countryName) { - GetPlatform().RunTask(Platform::Thread::File, [this, countryName] + auto const mwmId = m_getMwmIdByNameFn(countryName); + GetPlatform().RunTask(Platform::Thread::File, [this, mwmId] { - ProcessRequests({std::make_pair(m_getMwmIdByNameFn(countryName), RequestType::Delete)}); + ProcessRequests({std::make_pair(mwmId, RequestType::Delete)}); }); } diff --git a/map/local_ads_manager.hpp b/map/local_ads_manager.hpp index b790918c06..c65aa56e76 100644 --- a/map/local_ads_manager.hpp +++ b/map/local_ads_manager.hpp @@ -86,7 +86,7 @@ private: // by some reason. bool DownloadCampaign(MwmSet::MwmId const & mwmId, std::vector & bytes); - void RequestCampaigns(std::vector && mwmIds); + void RequestCampaigns(std::vector const & mwmIds); GetMwmsByRectFn const m_getMwmsByRectFn; GetMwmIdByNameFn const m_getMwmIdByNameFn;