From d5c1fe7839d5769a811ef2304bca0a200b91bb0c Mon Sep 17 00:00:00 2001 From: "r.kuznetsov" Date: Wed, 31 Jan 2018 14:52:49 +0300 Subject: [PATCH] Fixed infinite memory consumption on start in iOS 10.2 --- drape_frontend/frontend_renderer.cpp | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index 096fc52a96..370d67b24a 100755 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -870,15 +870,21 @@ void FrontendRenderer::UpdateGLResources() m_trafficRenderer->ClearGLDependentResources(); - // Request new tiles. - ScreenBase screen = m_userEventStream.GetCurrentScreen(); - m_lastReadedModelView = screen; - m_requestedTiles->Set(screen, m_isIsometry || screen.isPerspective(), - m_forceUpdateScene, m_forceUpdateUserMarks, - ResolveTileKeys(screen)); - m_commutator->PostMessage(ThreadsCommutator::ResourceUploadThread, - make_unique_dp(), - MessagePriority::UberHighSingleton); + // In some cases UpdateGLResources can be called before the rendering of + // the first frame. m_currentZoomLevel will be equal to -1, so ResolveTileKeys + // could not be called. + if (m_currentZoomLevel > 0) + { + // Request new tiles. + ScreenBase screen = m_userEventStream.GetCurrentScreen(); + m_lastReadedModelView = screen; + m_requestedTiles->Set(screen, m_isIsometry || screen.isPerspective(), + m_forceUpdateScene, m_forceUpdateUserMarks, + ResolveTileKeys(screen)); + m_commutator->PostMessage(ThreadsCommutator::ResourceUploadThread, + make_unique_dp(), + MessagePriority::UberHighSingleton); + } m_gpsTrackRenderer->Update(); }