Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaria Volvenkova <d.volvenkova@corp.mail.ru>2018-07-11 16:03:22 +0300
committerVlad Mihaylenko <vxmihaylenko@gmail.com>2018-07-20 14:51:41 +0300
commit29fe27c2b122abc5b11e37299278e0519986e1d0 (patch)
treedaf7bc64872e14d4632d49c9ae2faec1283ae283 /drape_frontend
parent1f89e46fd05869697bbf89282cb4fc2561307938 (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.cpp9
-rw-r--r--drape_frontend/drape_engine.cpp7
-rw-r--r--drape_frontend/drape_engine.hpp1
-rwxr-xr-xdrape_frontend/frontend_renderer.cpp15
-rwxr-xr-xdrape_frontend/frontend_renderer.hpp3
-rw-r--r--drape_frontend/message.hpp1
-rw-r--r--drape_frontend/message_subclasses.hpp6
-rw-r--r--drape_frontend/route_renderer.cpp5
-rw-r--r--drape_frontend/route_renderer.hpp1
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,