diff --git a/drape_frontend/backend_renderer.cpp b/drape_frontend/backend_renderer.cpp index 9d4fa7b89b..ac4e252e03 100644 --- a/drape_frontend/backend_renderer.cpp +++ b/drape_frontend/backend_renderer.cpp @@ -148,8 +148,8 @@ void BackendRenderer::AcceptMessage(ref_ptr message) case Message::GuiRecache: { ref_ptr msg = message; - RecacheGui(msg->GetInitInfo(), msg->NeedResetOldGui()); - + m_lastWidgetsInfo = msg->GetInitInfo(); + RecacheGui(m_lastWidgetsInfo, msg->NeedResetOldGui()); #ifdef RENDER_DEBUG_INFO_LABELS RecacheDebugLabels(); #endif @@ -335,6 +335,10 @@ void BackendRenderer::AcceptMessage(ref_ptr message) { m_texMng->OnSwitchMapStyle(); RecacheMapShapes(); + RecacheGui(m_lastWidgetsInfo, false /* needResetOldGui */); +#ifdef RENDER_DEBUG_INFO_LABELS + RecacheDebugLabels(); +#endif m_trafficGenerator->InvalidateTexturesCache(); m_transitBuilder->RebuildSchemes(m_texMng); break; diff --git a/drape_frontend/backend_renderer.hpp b/drape_frontend/backend_renderer.hpp index 09f227cffe..83fd6ce54d 100644 --- a/drape_frontend/backend_renderer.hpp +++ b/drape_frontend/backend_renderer.hpp @@ -124,6 +124,8 @@ private: drape_ptr m_metalineManager; + gui::TWidgetsInitInfo m_lastWidgetsInfo; + #ifdef DEBUG bool m_isTeardowned; #endif diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp index b35d23d466..ef77fa6c56 100644 --- a/drape_frontend/drape_engine.cpp +++ b/drape_frontend/drape_engine.cpp @@ -369,17 +369,9 @@ void DrapeEngine::InvalidateRect(m2::RectD const & rect) void DrapeEngine::UpdateMapStyle() { - // Update map style. - { - UpdateMapStyleMessage::Blocker blocker; - m_threadCommutator->PostMessage(ThreadsCommutator::RenderThread, - make_unique_dp(blocker), - MessagePriority::High); - blocker.Wait(); - } - - // Recache gui after updating of style. - RecacheGui(false); + m_threadCommutator->PostMessage(ThreadsCommutator::RenderThread, + make_unique_dp(), + MessagePriority::High); } void DrapeEngine::RecacheMapShapes() diff --git a/drape_frontend/message_subclasses.hpp b/drape_frontend/message_subclasses.hpp index 9217759712..f270bc9238 100644 --- a/drape_frontend/message_subclasses.hpp +++ b/drape_frontend/message_subclasses.hpp @@ -673,13 +673,9 @@ private: bool m_isVisible; }; -class UpdateMapStyleMessage : public BaseBlockingMessage +class UpdateMapStyleMessage : public Message { public: - UpdateMapStyleMessage(Blocker & blocker) - : BaseBlockingMessage(blocker) - {} - Type GetType() const override { return Message::UpdateMapStyle; } };