diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index e80f4b3dd1..4a78c3c780 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -57,27 +57,10 @@ namespace android delete m_videoTimer; } - namespace - { - struct make_all_invalid - { - make_all_invalid() - {} - - void operator() (int, int, int, drule::BaseRule * p) - { - p->MakeEmptyID(); - p->MakeEmptyID2(); - } - }; - } - void Framework::DeleteRenderPolicy() { LOG(LINFO, ("clearing current render policy.")); m_work.SetRenderPolicy(0); - LOG(LINFO, ("cleaning all cached ruleID values.")); - drule::rules().ForEachRule(make_all_invalid()); } void Framework::InitRenderPolicy() diff --git a/indexer/drawing_rules.cpp b/indexer/drawing_rules.cpp index 8b6bcfcbe4..31f1da4a35 100644 --- a/indexer/drawing_rules.cpp +++ b/indexer/drawing_rules.cpp @@ -1550,4 +1550,10 @@ void RulesHolder::LoadFromProto(string const & buffer) classif().GetMutableRoot()->ForEachObject(bind(ref(doSet), _1)); } +void RulesHolder::ClearCaches() +{ + ForEachRule(bind(&BaseRule::MakeEmptyID, _4)); + ForEachRule(bind(&BaseRule::MakeEmptyID2, _4)); +} + } diff --git a/indexer/drawing_rules.hpp b/indexer/drawing_rules.hpp index 1cba4b0bcd..a525eaeffa 100644 --- a/indexer/drawing_rules.hpp +++ b/indexer/drawing_rules.hpp @@ -162,6 +162,7 @@ namespace drule void Read(ReaderPtrStream & s); void Write(FileWriterStream & s); void LoadFromProto(string const & buffer); + void ClearCaches(); template void ForEachRule(ToDo toDo) { diff --git a/map/render_policy.cpp b/map/render_policy.cpp index a09495e48d..08f742daed 100644 --- a/map/render_policy.cpp +++ b/map/render_policy.cpp @@ -2,6 +2,8 @@ #include "render_policy.hpp" +#include "../indexer/drawing_rules.hpp" + #include "../map/render_policy_st.hpp" #include "../map/render_policy_mt.hpp" #include "../map/tiling_render_policy_st.hpp" @@ -14,7 +16,10 @@ #include "../platform/settings.hpp" RenderPolicy::~RenderPolicy() -{} +{ + LOG(LINFO, ("clearing cached drawing rules")); + drule::rules().ClearCaches(); +} RenderPolicy::RenderPolicy(shared_ptr const & primaryRC, bool doSupportRotation) : m_bgColor(0xEE, 0xEE, 0xDD, 0xFF),