Fixed crash in new route rendering on Android

This commit is contained in:
r.kuznetsov 2015-08-07 19:02:53 +03:00 committed by Alex Zolotarev
parent 26e4f5df86
commit 274174fed6
2 changed files with 6 additions and 3 deletions

View file

@ -659,7 +659,6 @@ bool Framework::AddBookmarksFile(string const & filePath)
void Framework::PrepareToShutdown()
{
#ifndef USE_DRAPE
m_bmManager.PrepareToShutdown();
SetRenderPolicy(0);
#else
m_drapeEngine.Destroy();
@ -1525,6 +1524,9 @@ bool Framework::GetDistanceAndAzimut(m2::PointD const & point,
#ifndef USE_DRAPE
void Framework::SetRenderPolicy(RenderPolicy * renderPolicy)
{
if (renderPolicy == nullptr)
m_bmManager.PrepareToShutdown();
m_bmManager.ResetScreen();
m_guiController->ResetRenderParams();
m_renderPolicy.reset();

View file

@ -269,17 +269,17 @@ void RouteRenderer::ConstructRoute(graphics::Screen * dlScreen)
// storages
size_t vbSize = m_routeData.m_geometry.size() * sizeof(graphics::gl::RouteVertex);
size_t ibSize = m_routeData.m_indices.size() * sizeof(unsigned short);
ASSERT_NOT_EQUAL(vbSize, 0, ());
ASSERT_NOT_EQUAL(ibSize, 0, ());
m_storage = graphics::gl::Storage(vbSize, ibSize);
void * vbPtr = m_storage.m_vertices->lock();
memcpy(vbPtr, m_routeData.m_geometry.data(), vbSize);
m_routeData.m_geometry.clear();
m_storage.m_vertices->unlock();
void * ibPtr = m_storage.m_indices->lock();
memcpy(ibPtr, m_routeData.m_indices.data(), ibSize);
m_storage.m_indices->unlock();
m_routeData.m_indices.clear();
size_t const arrowBufferSize = m_turns.size() * 500;
m_arrowsStorage = graphics::gl::Storage(arrowBufferSize * sizeof(graphics::gl::RouteVertex),
@ -319,6 +319,7 @@ void RouteRenderer::ClearRoute(graphics::Screen * dlScreen)
void RouteRenderer::PrepareToShutdown()
{
DestroyDisplayLists();
m_waitForConstruction = true;
}
void RouteRenderer::DestroyDisplayLists()