diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index 8f65bf945d..c74d9ca944 100755 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -161,9 +161,11 @@ void FrontendRenderer::AcceptMessage(ref_ptr message) eraseFunction(m_renderGroups); eraseFunction(m_deferredRenderGroups); + BaseBlockingMessage::Blocker blocker; m_commutator->PostMessage(ThreadsCommutator::ResourceUploadThread, - make_unique_dp(tiles), - MessagePriority::Normal); + make_unique_dp(blocker, tiles), + MessagePriority::High); + blocker.Wait(); m_requestedTiles->Set(screen, move(tiles)); m_commutator->PostMessage(ThreadsCommutator::ResourceUploadThread, @@ -383,16 +385,22 @@ void FrontendRenderer::AcceptMessage(ref_ptr message) m_deferredRenderGroups.clear(); // Invalidate read manager. - m_commutator->PostMessage(ThreadsCommutator::ResourceUploadThread, - make_unique_dp(tiles), - MessagePriority::Normal); + { + BaseBlockingMessage::Blocker blocker; + m_commutator->PostMessage(ThreadsCommutator::ResourceUploadThread, + make_unique_dp(blocker, tiles), + MessagePriority::High); + blocker.Wait(); + } // Invalidate textures and wait for completion. - BaseBlockingMessage::Blocker blocker; - m_commutator->PostMessage(ThreadsCommutator::ResourceUploadThread, - make_unique_dp(blocker), - MessagePriority::Normal); - blocker.Wait(); + { + BaseBlockingMessage::Blocker blocker; + m_commutator->PostMessage(ThreadsCommutator::ResourceUploadThread, + make_unique_dp(blocker), + MessagePriority::High); + blocker.Wait(); + } // Invalidate route. if (m_routeRenderer->GetStartPoint()) diff --git a/drape_frontend/message_subclasses.hpp b/drape_frontend/message_subclasses.hpp index 2e08a2ebc8..ab074ecb77 100644 --- a/drape_frontend/message_subclasses.hpp +++ b/drape_frontend/message_subclasses.hpp @@ -158,11 +158,13 @@ public: Type GetType() const override { return Message::UpdateReadManager; } }; -class InvalidateReadManagerRectMessage : public Message +class InvalidateReadManagerRectMessage : public BaseBlockingMessage { public: - InvalidateReadManagerRectMessage(TTilesCollection const & tiles) - : m_tiles(tiles) {} + InvalidateReadManagerRectMessage(Blocker & blocker, TTilesCollection const & tiles) + : BaseBlockingMessage(blocker) + , m_tiles(tiles) + {} Type GetType() const override { return Message::InvalidateReadManagerRect; }