diff options
author | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2018-07-11 16:03:22 +0300 |
---|---|---|
committer | Vlad Mihaylenko <vxmihaylenko@gmail.com> | 2018-07-20 14:51:41 +0300 |
commit | 29fe27c2b122abc5b11e37299278e0519986e1d0 (patch) | |
tree | daf7bc64872e14d4632d49c9ae2faec1283ae283 /drape_frontend | |
parent | 1f89e46fd05869697bbf89282cb4fc2561307938 (diff) |
Don't render transit schemes if there is a route. Clear transit cache if the following mode is enabled.
Diffstat (limited to 'drape_frontend')
-rw-r--r-- | drape_frontend/backend_renderer.cpp | 9 | ||||
-rw-r--r-- | drape_frontend/drape_engine.cpp | 7 | ||||
-rw-r--r-- | drape_frontend/drape_engine.hpp | 1 | ||||
-rwxr-xr-x | drape_frontend/frontend_renderer.cpp | 15 | ||||
-rwxr-xr-x | drape_frontend/frontend_renderer.hpp | 3 | ||||
-rw-r--r-- | drape_frontend/message.hpp | 1 | ||||
-rw-r--r-- | drape_frontend/message_subclasses.hpp | 6 | ||||
-rw-r--r-- | drape_frontend/route_renderer.cpp | 5 | ||||
-rw-r--r-- | drape_frontend/route_renderer.hpp | 1 |
9 files changed, 45 insertions, 3 deletions
diff --git a/drape_frontend/backend_renderer.cpp b/drape_frontend/backend_renderer.cpp index 9561214ab2..9d4fa7b89b 100644 --- a/drape_frontend/backend_renderer.cpp +++ b/drape_frontend/backend_renderer.cpp @@ -456,6 +456,15 @@ void BackendRenderer::AcceptMessage(ref_ptr<Message> message) break; } + case Message::ClearAllTransitSchemeData: + { + m_transitBuilder->Clear(); + m_commutator->PostMessage(ThreadsCommutator::RenderThread, + make_unique_dp<ClearAllTransitSchemeDataMessage>(), + MessagePriority::Normal); + break; + } + case Message::EnableTransitScheme: { ref_ptr<EnableTransitSchemeMessage> msg = message; diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp index f907ae9f6e..b35d23d466 100644 --- a/drape_frontend/drape_engine.cpp +++ b/drape_frontend/drape_engine.cpp @@ -749,6 +749,13 @@ void DrapeEngine::ClearTransitSchemeCache(MwmSet::MwmId const & mwmId) MessagePriority::Normal); } +void DrapeEngine::ClearAllTransitSchemeCache() +{ + m_threadCommutator->PostMessage(ThreadsCommutator::ResourceUploadThread, + make_unique_dp<ClearAllTransitSchemeDataMessage>(), + MessagePriority::Normal); +} + void DrapeEngine::UpdateTransitScheme(TransitDisplayInfos && transitDisplayInfos) { m_threadCommutator->PostMessage(ThreadsCommutator::ResourceUploadThread, diff --git a/drape_frontend/drape_engine.hpp b/drape_frontend/drape_engine.hpp index 70f815073a..0397b6fd25 100644 --- a/drape_frontend/drape_engine.hpp +++ b/drape_frontend/drape_engine.hpp @@ -205,6 +205,7 @@ public: void EnableTransitScheme(bool enable); void UpdateTransitScheme(TransitDisplayInfos && transitDisplayInfos); void ClearTransitSchemeCache(MwmSet::MwmId const & mwmId); + void ClearAllTransitSchemeCache(); void SetFontScaleFactor(double scaleFactor); diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index a00c406a9f..8f15c6d809 100755 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -771,6 +771,12 @@ void FrontendRenderer::AcceptMessage(ref_ptr<Message> message) break; } + case Message::ClearAllTransitSchemeData: + { + m_transitSchemeRenderer->ClearGLDependentResources(make_ref(m_overlayTree)); + break; + } + case Message::EnableTraffic: { ref_ptr<EnableTrafficMessage> msg = message; @@ -1278,7 +1284,7 @@ void FrontendRenderer::RenderScene(ScreenBase const & modelView, bool activeFram RenderSearchMarksLayer(modelView); } - if (!HasTransitRouteData()) + if (!HasRouteData()) RenderTransitSchemeLayer(modelView); m_drapeApiRenderer->Render(modelView, make_ref(m_gpuProgramManager), m_frameValues); @@ -1369,11 +1375,16 @@ void FrontendRenderer::RenderNavigationOverlayLayer(ScreenBase const & modelView } } -bool FrontendRenderer::HasTransitRouteData() +bool FrontendRenderer::HasTransitRouteData() const { return m_routeRenderer->HasTransitData(); } +bool FrontendRenderer::HasRouteData() const +{ + return m_routeRenderer->HasData(); +} + void FrontendRenderer::RenderTransitSchemeLayer(ScreenBase const & modelView) { GLFunctions::glClear(gl_const::GLDepthBit); diff --git a/drape_frontend/frontend_renderer.hpp b/drape_frontend/frontend_renderer.hpp index 1ce744b79e..4976bf8765 100755 --- a/drape_frontend/frontend_renderer.hpp +++ b/drape_frontend/frontend_renderer.hpp @@ -171,7 +171,8 @@ private: void RenderSearchMarksLayer(ScreenBase const & modelView); void RenderTransitBackground(); - bool HasTransitRouteData(); + bool HasTransitRouteData() const; + bool HasRouteData() const; ScreenBase const & ProcessEvents(bool & modelViewChanged, bool & viewportChanged); void PrepareScene(ScreenBase const & modelView); diff --git a/drape_frontend/message.hpp b/drape_frontend/message.hpp index bb2075a307..a6a85e3f6c 100644 --- a/drape_frontend/message.hpp +++ b/drape_frontend/message.hpp @@ -88,6 +88,7 @@ public: EnableTransitScheme, UpdateTransitScheme, ClearTransitSchemeData, + ClearAllTransitSchemeData, RegenerateTransitScheme, FlushTransitScheme, ShowDebugInfo, diff --git a/drape_frontend/message_subclasses.hpp b/drape_frontend/message_subclasses.hpp index a2569584aa..9217759712 100644 --- a/drape_frontend/message_subclasses.hpp +++ b/drape_frontend/message_subclasses.hpp @@ -1050,6 +1050,12 @@ private: MwmSet::MwmId m_mwmId; }; +class ClearAllTransitSchemeDataMessage : public Message +{ +public: + Type GetType() const override { return Message::ClearAllTransitSchemeData; } +}; + class UpdateTransitSchemeMessage : public Message { public: diff --git a/drape_frontend/route_renderer.cpp b/drape_frontend/route_renderer.cpp index 1b71d242d9..accceee5cb 100644 --- a/drape_frontend/route_renderer.cpp +++ b/drape_frontend/route_renderer.cpp @@ -737,4 +737,9 @@ bool RouteRenderer::HasTransitData() const } return false; } + +bool RouteRenderer::HasData() const +{ + return !m_subroutes.empty(); +} } // namespace df diff --git a/drape_frontend/route_renderer.hpp b/drape_frontend/route_renderer.hpp index b9f402da21..6d29d6db6f 100644 --- a/drape_frontend/route_renderer.hpp +++ b/drape_frontend/route_renderer.hpp @@ -90,6 +90,7 @@ public: void SetSubrouteVisibility(dp::DrapeID id, bool isVisible); bool HasTransitData() const; + bool HasData() const; private: void RenderSubroute(SubrouteInfo const & subrouteInfo, size_t subrouteDataIndex, |