diff --git a/drape_frontend/base_renderer.cpp b/drape_frontend/base_renderer.cpp index 9292eabe14..1b363b43dc 100644 --- a/drape_frontend/base_renderer.cpp +++ b/drape_frontend/base_renderer.cpp @@ -59,6 +59,11 @@ void BaseRenderer::SetRenderingEnabled(bool const isEnabled) completionCondition.wait(lock, [¬ified] { return notified; }); } +bool BaseRenderer::IsRenderingEnabled() const +{ + return m_isEnabled; +} + void BaseRenderer::SetRenderingEnabled(bool const isEnabled, TCompletionHandler completionHandler) { if (isEnabled == m_isEnabled) diff --git a/drape_frontend/base_renderer.hpp b/drape_frontend/base_renderer.hpp index 4cc54cdd0b..58afbdd0a8 100644 --- a/drape_frontend/base_renderer.hpp +++ b/drape_frontend/base_renderer.hpp @@ -41,6 +41,7 @@ public: bool CanReceiveMessages(); void SetRenderingEnabled(bool const isEnabled); + bool IsRenderingEnabled() const; protected: ref_ptr m_commutator; diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index f4d8aa1b3e..7a6d81a431 100755 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -1420,7 +1420,9 @@ void FrontendRenderer::Routine::Do() if (activityTimer.ElapsedSeconds() > kMaxInactiveSeconds) { // Process a message or wait for a message. - m_renderer.ProcessSingleMessage(); + // IsRenderingEnabled() can return false in case of rendering disabling and we must prevent + // possibility of infinity waiting in ProcessSingleMessage. + m_renderer.ProcessSingleMessage(m_renderer.IsRenderingEnabled()); activityTimer.Reset(); } else