diff --git a/drape_frontend/backend_renderer.cpp b/drape_frontend/backend_renderer.cpp index fae7d63592..a3a1b52707 100644 --- a/drape_frontend/backend_renderer.cpp +++ b/drape_frontend/backend_renderer.cpp @@ -125,8 +125,8 @@ void BackendRenderer::AcceptMessage(ref_ptr message) case Message::InvalidateReadManagerRect: { ref_ptr msg = message; - if (msg->NeedInvalidateAll()) - m_readManager->InvalidateAll(); + if (msg->NeedRestartReading()) + m_readManager->Restart(); else m_readManager->Invalidate(msg->GetTilesForInvalidate()); break; diff --git a/drape_frontend/message_subclasses.hpp b/drape_frontend/message_subclasses.hpp index 38612a964a..b9abd2b688 100644 --- a/drape_frontend/message_subclasses.hpp +++ b/drape_frontend/message_subclasses.hpp @@ -182,22 +182,22 @@ public: InvalidateReadManagerRectMessage(Blocker & blocker, TTilesCollection const & tiles) : BaseBlockingMessage(blocker) , m_tiles(tiles) - , m_needInvalidateAll(false) + , m_needRestartReading(false) {} InvalidateReadManagerRectMessage(Blocker & blocker) : BaseBlockingMessage(blocker) - , m_needInvalidateAll(true) + , m_needRestartReading(true) {} Type GetType() const override { return Message::InvalidateReadManagerRect; } TTilesCollection const & GetTilesForInvalidate() const { return m_tiles; } - bool NeedInvalidateAll() const { return m_needInvalidateAll; } + bool NeedRestartReading() const { return m_needRestartReading; } private: TTilesCollection m_tiles; - bool m_needInvalidateAll; + bool m_needRestartReading; }; class ClearUserMarkGroupMessage : public Message diff --git a/drape_frontend/read_manager.cpp b/drape_frontend/read_manager.cpp index 3b374da994..78a4f37011 100755 --- a/drape_frontend/read_manager.cpp +++ b/drape_frontend/read_manager.cpp @@ -78,10 +78,16 @@ void ReadManager::Stop() m_pool.reset(); } +void ReadManager::Restart() +{ + Stop(); + Start(); +} + void ReadManager::OnTaskFinished(threads::IRoutine * task) { ASSERT(dynamic_cast(task) != NULL, ()); - ReadMWMTask * t = static_cast(task); + auto t = static_cast(task); // finish tiles { diff --git a/drape_frontend/read_manager.hpp b/drape_frontend/read_manager.hpp index 5cf839a923..276fc31baa 100755 --- a/drape_frontend/read_manager.hpp +++ b/drape_frontend/read_manager.hpp @@ -38,6 +38,7 @@ public: void Start(); void Stop(); + void Restart(); void UpdateCoverage(ScreenBase const & screen, bool have3dBuildings, bool forceUpdate, bool forceUpdateUserMarks,