diff --git a/drape/overlay_tree.cpp b/drape/overlay_tree.cpp index 20935f5a0d..6f4de7928c 100644 --- a/drape/overlay_tree.cpp +++ b/drape/overlay_tree.cpp @@ -87,6 +87,15 @@ OverlayTree::OverlayTree() m_handles[i].reserve(kAverageHandlesCount[i]); } +void OverlayTree::Clear() +{ + m_frameCounter = kInvalidFrame; + TBase::Clear(); + m_handlesCache.clear(); + for (auto & handles : m_handles) + handles.clear(); +} + bool OverlayTree::Frame() { if (IsNeedUpdate()) @@ -107,7 +116,7 @@ bool OverlayTree::IsNeedUpdate() const void OverlayTree::StartOverlayPlacing(ScreenBase const & screen) { ASSERT(IsNeedUpdate(), ()); - Clear(); + TBase::Clear(); m_handlesCache.clear(); m_traits.m_modelView = screen; m_displacementInfo.clear(); diff --git a/drape/overlay_tree.hpp b/drape/overlay_tree.hpp index 02ec201506..209774beae 100644 --- a/drape/overlay_tree.hpp +++ b/drape/overlay_tree.hpp @@ -48,6 +48,7 @@ public: OverlayTree(); + void Clear(); bool Frame(); bool IsNeedUpdate() const; diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index da35e57cf3..1f4292f706 100755 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -1668,6 +1668,7 @@ void FrontendRenderer::OnContextDestroy() m_selectObjectMessage.reset(); m_overlayTree->SetSelectedFeature(FeatureID()); + m_overlayTree->Clear(); m_userMarkRenderGroups.clear(); m_guiRenderer.reset();