From 6871bfadb01db7609b391f288a9850a57a5c57f9 Mon Sep 17 00:00:00 2001 From: Daria Volvenkova Date: Mon, 30 Jan 2017 18:01:31 +0300 Subject: [PATCH] Fixed crash inside the handler of new visible viewport event. --- drape_frontend/frontend_renderer.cpp | 9 ++++++++- drape_frontend/message_subclasses.hpp | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index c5120eebd4..814bd5c4dd 100755 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -1518,6 +1518,10 @@ bool FrontendRenderer::OnNewVisibleViewport(m2::RectD const & oldViewport, m2::R { m2::RectD rect(pos, pos); m2::RectD targetRect(targetPos, targetPos); + + if (m_overlayTree->IsNeedUpdate()) + BuildOverlayTree(screen); + if (!(m_selectionShape->GetSelectedObject() == SelectionShape::OBJECT_POI && m_overlayTree->GetSelectedFeatureRect(screen, rect) && m_overlayTree->GetSelectedFeatureRect(targetScreen, targetRect))) @@ -1610,9 +1614,12 @@ void FrontendRenderer::OnContextDestroy() layer.m_isDirty = false; } + m_selectObjectMessage.reset(); + m_overlayTree->SetSelectedFeature(FeatureID()); + m_userMarkRenderGroups.clear(); m_guiRenderer.reset(); - m_selectionShape.release(); + m_selectionShape.reset(); m_framebuffer.reset(); m_transparentLayer.reset(); diff --git a/drape_frontend/message_subclasses.hpp b/drape_frontend/message_subclasses.hpp index a861ec4906..cba546bc12 100644 --- a/drape_frontend/message_subclasses.hpp +++ b/drape_frontend/message_subclasses.hpp @@ -543,6 +543,7 @@ public: {} Type GetType() const override { return SelectObject; } + bool IsGLContextDependent() const override { return true; } m2::PointD const & GetPosition() const { return m_glbPoint; } SelectionShape::ESelectedObject GetSelectedObject() const { return m_selected; }