diff --git a/drape/render_bucket.cpp b/drape/render_bucket.cpp index faffdd0d10..6abd709ea7 100644 --- a/drape/render_bucket.cpp +++ b/drape/render_bucket.cpp @@ -50,19 +50,20 @@ namespace void AccumulateMutations(MasterPointer const & handle, RefPointer indexMutator, - RefPointer attributeMutator) + RefPointer attributeMutator, + ScreenBase const & screen) { if (handle->IsVisible()) { handle->GetElementIndexes(indexMutator); if (handle->HasDynamicAttributes()) - handle->GetAttributeMutation(attributeMutator); + handle->GetAttributeMutation(attributeMutator, screen); } } } // namespace -void RenderBucket::Render() +void RenderBucket::Render(ScreenBase const & screen) { if (!m_overlay.empty()) { @@ -71,7 +72,8 @@ void RenderBucket::Render() IndexBufferMutator indexMutator(6 * m_overlay.size()); for_each(m_overlay.begin(), m_overlay.end(), bind(&AccumulateMutations, _1, MakeStackRefPointer(&indexMutator), - MakeStackRefPointer(&attributeMutator))); + MakeStackRefPointer(&attributeMutator), + screen)); m_buffer->ApplyMutation(MakeStackRefPointer(&indexMutator), MakeStackRefPointer(&attributeMutator)); } diff --git a/drape/render_bucket.hpp b/drape/render_bucket.hpp index 2db38aa162..cbd30ac49d 100644 --- a/drape/render_bucket.hpp +++ b/drape/render_bucket.hpp @@ -23,7 +23,7 @@ public: void Update(ScreenBase const & modelView); void CollectOverlayHandles(RefPointer tree); - void Render(); + void Render(const ScreenBase & screen); private: vector > m_overlay; diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index 4b4f55e216..7bf347f04e 100644 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -220,7 +220,7 @@ void FrontendRenderer::RenderScene() ApplyUniforms(m_generalUniforms, program); ApplyState(state, program, m_textureController.GetRefPointer()); - group->Render(); + group->Render(m_view); } #ifdef DRAW_INFO @@ -328,6 +328,9 @@ void FrontendRenderer::ThreadMain() //int messageCount = 0; double availableTime = VSyncInterval - (timer.ElapsedSeconds() /*+ avarageMessageTime*/); + if (availableTime < 0.0) + availableTime = 0.01; + while (availableTime > 0) { ProcessSingleMessage(availableTime * 1000.0); diff --git a/drape_frontend/render_group.cpp b/drape_frontend/render_group.cpp index 3e79979235..84f6844e8b 100644 --- a/drape_frontend/render_group.cpp +++ b/drape_frontend/render_group.cpp @@ -34,11 +34,11 @@ void RenderGroup::CollectOverlay(dp::RefPointer tree) tree)); } -void RenderGroup::Render() +void RenderGroup::Render(ScreenBase const & screen) { ASSERT(m_pendingOnDelete == false, ()); for_each(m_renderBuckets.begin(), m_renderBuckets.end(), bind(&dp::RenderBucket::Render, - bind(&dp::NonConstGetter, _1))); + bind(&dp::NonConstGetter, _1), screen)); } void RenderGroup::PrepareForAdd(size_t countForAdd) diff --git a/drape_frontend/render_group.hpp b/drape_frontend/render_group.hpp index 040097c8be..9c0c2e6778 100644 --- a/drape_frontend/render_group.hpp +++ b/drape_frontend/render_group.hpp @@ -23,7 +23,7 @@ public: void Update(ScreenBase const & modelView); void CollectOverlay(dp::RefPointer tree); - void Render(); + void Render(const ScreenBase & screen); void PrepareForAdd(size_t countForAdd); void AddBucket(dp::TransferPointer bucket);