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-03 17:59:07 +0300
committerRoman Kuznetsov <r.kuznetsow@gmail.com>2018-07-03 18:27:01 +0300
commit041cd3e8aef8de0bad9cee6b090072775dbe0656 (patch)
tree151aadf919c33e344a89087337894ff5ea79565e /drape_frontend
parent4c7e19e2d57e4d30bb410f5186c276efb4297a33 (diff)
Fixed calculation of transit scheme state.
Diffstat (limited to 'drape_frontend')
-rw-r--r--drape_frontend/backend_renderer.cpp1
-rw-r--r--drape_frontend/drape_engine.cpp6
-rw-r--r--drape_frontend/drape_engine.hpp3
-rwxr-xr-xdrape_frontend/frontend_renderer.cpp8
-rwxr-xr-xdrape_frontend/frontend_renderer.hpp1
-rw-r--r--drape_frontend/message_subclasses.hpp7
-rw-r--r--drape_frontend/transit_scheme_builder.cpp5
-rw-r--r--drape_frontend/transit_scheme_builder.hpp3
-rw-r--r--drape_frontend/transit_scheme_renderer.cpp16
-rw-r--r--drape_frontend/transit_scheme_renderer.hpp7
10 files changed, 25 insertions, 32 deletions
diff --git a/drape_frontend/backend_renderer.cpp b/drape_frontend/backend_renderer.cpp
index d0da551c84..f4588b298e 100644
--- a/drape_frontend/backend_renderer.cpp
+++ b/drape_frontend/backend_renderer.cpp
@@ -436,7 +436,6 @@ void BackendRenderer::AcceptMessage(ref_ptr<Message> message)
case Message::UpdateTransitScheme:
{
ref_ptr<UpdateTransitSchemeMessage> msg = message;
- m_transitBuilder->SetVisibleMwms(msg->GetVisibleMwms());
m_transitBuilder->UpdateSchemes(msg->GetTransitDisplayInfos(), m_texMng);
break;
}
diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp
index 98bc54e27f..ffc50bd433 100644
--- a/drape_frontend/drape_engine.cpp
+++ b/drape_frontend/drape_engine.cpp
@@ -749,12 +749,10 @@ void DrapeEngine::ClearTransitSchemeCache(MwmSet::MwmId const & mwmId)
MessagePriority::Normal);
}
-void DrapeEngine::UpdateTransitScheme(TransitDisplayInfos && transitDisplayInfos,
- std::vector<MwmSet::MwmId> const & visibleMwms)
+void DrapeEngine::UpdateTransitScheme(TransitDisplayInfos && transitDisplayInfos)
{
m_threadCommutator->PostMessage(ThreadsCommutator::ResourceUploadThread,
- make_unique_dp<UpdateTransitSchemeMessage>(std::move(transitDisplayInfos),
- visibleMwms),
+ make_unique_dp<UpdateTransitSchemeMessage>(std::move(transitDisplayInfos)),
MessagePriority::Normal);
}
diff --git a/drape_frontend/drape_engine.hpp b/drape_frontend/drape_engine.hpp
index b2f5c1844f..a3d6277a4d 100644
--- a/drape_frontend/drape_engine.hpp
+++ b/drape_frontend/drape_engine.hpp
@@ -203,8 +203,7 @@ public:
void SetSimplifiedTrafficColors(bool simplified);
void EnableTransitScheme(bool enable);
- void UpdateTransitScheme(TransitDisplayInfos && transitDisplayInfos,
- std::vector<MwmSet::MwmId> const & visibleMwms);
+ void UpdateTransitScheme(TransitDisplayInfos && transitDisplayInfos);
void ClearTransitSchemeCache(MwmSet::MwmId const & mwmId);
void SetFontScaleFactor(double scaleFactor);
diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp
index 33b14be677..0c4a7360d1 100755
--- a/drape_frontend/frontend_renderer.cpp
+++ b/drape_frontend/frontend_renderer.cpp
@@ -753,6 +753,7 @@ void FrontendRenderer::AcceptMessage(ref_ptr<Message> message)
case Message::EnableTransitScheme:
{
ref_ptr<EnableTransitSchemeMessage > msg = message;
+ m_transitSchemeEnabled = msg->IsEnabled();
if (!msg->IsEnabled())
m_transitSchemeRenderer->ClearGLDependentResources(make_ref(m_overlayTree));
break;
@@ -1360,11 +1361,10 @@ void FrontendRenderer::RenderTransitSchemeLayer(ScreenBase const & modelView)
{
GLFunctions::glClear(gl_const::GLDepthBit);
GLFunctions::glEnable(gl_const::GLDepthTest);
- if (m_transitSchemeRenderer->HasRenderData(m_currentZoomLevel))
+ if (m_transitSchemeEnabled && m_transitSchemeRenderer->IsSchemeVisible(m_currentZoomLevel))
{
RenderTransitBackground();
- GLFunctions::glEnable(gl_const::GLDepthTest);
- m_transitSchemeRenderer->RenderTransit(modelView, m_currentZoomLevel, make_ref(m_gpuProgramManager),
+ m_transitSchemeRenderer->RenderTransit(modelView, make_ref(m_gpuProgramManager),
make_ref(m_postprocessRenderer), m_generalUniforms);
}
GLFunctions::glDisable(gl_const::GLDepthTest);
@@ -1463,7 +1463,7 @@ void FrontendRenderer::BuildOverlayTree(ScreenBase const & modelView)
for (drape_ptr<RenderGroup> & group : overlay.m_renderGroups)
UpdateOverlayTree(modelView, group);
}
- if (m_transitSchemeRenderer->HasRenderData(m_currentZoomLevel) && !HasTransitRouteData())
+ if (m_transitSchemeRenderer->IsSchemeVisible(m_currentZoomLevel) && !HasTransitRouteData())
m_transitSchemeRenderer->CollectOverlays(make_ref(m_overlayTree), modelView);
EndUpdateOverlayTree();
}
diff --git a/drape_frontend/frontend_renderer.hpp b/drape_frontend/frontend_renderer.hpp
index 3a9a998f63..4baba1fdfe 100755
--- a/drape_frontend/frontend_renderer.hpp
+++ b/drape_frontend/frontend_renderer.hpp
@@ -318,6 +318,7 @@ private:
bool m_needRestoreSize;
bool m_trafficEnabled;
+ bool m_transitSchemeEnabled = false;
drape_ptr<OverlaysTracker> m_overlaysTracker;
OverlaysShowStatsCallback m_overlaysShowStatsCallback;
diff --git a/drape_frontend/message_subclasses.hpp b/drape_frontend/message_subclasses.hpp
index 6466ff5d3e..3a5fcab0f1 100644
--- a/drape_frontend/message_subclasses.hpp
+++ b/drape_frontend/message_subclasses.hpp
@@ -1053,19 +1053,16 @@ private:
class UpdateTransitSchemeMessage : public Message
{
public:
- UpdateTransitSchemeMessage(TransitDisplayInfos && transitInfos,
- std::vector<MwmSet::MwmId> const & visibleMwms)
- : m_transitInfos(move(transitInfos)), m_visibleMwms(visibleMwms)
+ UpdateTransitSchemeMessage(TransitDisplayInfos && transitInfos)
+ : m_transitInfos(move(transitInfos))
{}
Type GetType() const override { return Message::UpdateTransitScheme; }
TransitDisplayInfos const & GetTransitDisplayInfos() { return m_transitInfos; }
- std::vector<MwmSet::MwmId> const & GetVisibleMwms() const { return m_visibleMwms; }
private:
TransitDisplayInfos m_transitInfos;
- std::vector<MwmSet::MwmId> m_visibleMwms;
};
class RegenerateTransitMessage : public Message
diff --git a/drape_frontend/transit_scheme_builder.cpp b/drape_frontend/transit_scheme_builder.cpp
index e8f7e738ad..9fb1ba73e5 100644
--- a/drape_frontend/transit_scheme_builder.cpp
+++ b/drape_frontend/transit_scheme_builder.cpp
@@ -274,11 +274,6 @@ bool FindLongerPath(routing::transit::StopId stop1Id, routing::transit::StopId s
}
} // namespace
-void TransitSchemeBuilder::SetVisibleMwms(std::vector<MwmSet::MwmId> const & visibleMwms)
-{
- m_visibleMwms = visibleMwms;
-}
-
void TransitSchemeBuilder::UpdateSchemes(TransitDisplayInfos const & transitDisplayInfos,
ref_ptr<dp::TextureManager> textures)
{
diff --git a/drape_frontend/transit_scheme_builder.hpp b/drape_frontend/transit_scheme_builder.hpp
index 7c8610942f..e5a85b37de 100644
--- a/drape_frontend/transit_scheme_builder.hpp
+++ b/drape_frontend/transit_scheme_builder.hpp
@@ -111,8 +111,6 @@ public:
: m_flushRenderDataFn(flushFn)
{}
- void SetVisibleMwms(std::vector<MwmSet::MwmId> const & visibleMwms);
-
void UpdateSchemes(TransitDisplayInfos const & transitDisplayInfos, ref_ptr<dp::TextureManager> textures);
void RebuildSchemes(ref_ptr<dp::TextureManager> textures);
@@ -167,7 +165,6 @@ private:
using TransitSchemes = std::map<MwmSet::MwmId, MwmSchemeData>;
TransitSchemes m_schemes;
- std::vector<MwmSet::MwmId> m_visibleMwms;
TFlushRenderDataFn m_flushRenderDataFn;
diff --git a/drape_frontend/transit_scheme_renderer.cpp b/drape_frontend/transit_scheme_renderer.cpp
index 88d598eefa..ae04735e45 100644
--- a/drape_frontend/transit_scheme_renderer.cpp
+++ b/drape_frontend/transit_scheme_renderer.cpp
@@ -27,9 +27,15 @@ float CalculateHalfWidth(ScreenBase const & screen)
}
} // namespace
-bool TransitSchemeRenderer::HasRenderData(int zoomLevel) const
+bool TransitSchemeRenderer::IsSchemeVisible(int zoomLevel) const
{
- return !m_linesRenderData.empty() && zoomLevel >= kTransitSchemeMinZoomLevel;
+ return zoomLevel >= kTransitSchemeMinZoomLevel;
+}
+
+bool TransitSchemeRenderer::HasRenderData() const
+{
+ return !m_linesRenderData.empty() || !m_linesCapsRenderData.empty() || !m_markersRenderData.empty() ||
+ !m_textRenderData.empty() || !m_colorSymbolRenderData.empty();
}
void TransitSchemeRenderer::ClearGLDependentResources(ref_ptr<dp::OverlayTree> tree)
@@ -123,12 +129,12 @@ void TransitSchemeRenderer::PrepareRenderData(ref_ptr<gpu::ProgramManager> mng,
currentRenderData.emplace_back(std::move(newRenderData));
}
-void TransitSchemeRenderer::RenderTransit(ScreenBase const & screen, int zoomLevel,
- ref_ptr<gpu::ProgramManager> mng,
+void TransitSchemeRenderer::RenderTransit(ScreenBase const & screen, ref_ptr<gpu::ProgramManager> mng,
ref_ptr<PostprocessRenderer> postprocessRenderer,
dp::UniformValuesStorage const & commonUniforms)
{
- if (!HasRenderData(zoomLevel))
+ auto const zoomLevel = GetDrawTileScale(screen);
+ if (!IsSchemeVisible(zoomLevel) || !HasRenderData())
return;
float const pixelHalfWidth = CalculateHalfWidth(screen);
diff --git a/drape_frontend/transit_scheme_renderer.hpp b/drape_frontend/transit_scheme_renderer.hpp
index b222841d29..c09b1bff72 100644
--- a/drape_frontend/transit_scheme_renderer.hpp
+++ b/drape_frontend/transit_scheme_renderer.hpp
@@ -21,10 +21,9 @@ class TransitSchemeRenderer
public:
void AddRenderData(ref_ptr<gpu::ProgramManager> mng, ref_ptr<dp::OverlayTree> tree, TransitRenderData && renderData);
- bool HasRenderData(int zoomLevel) const;
+ bool IsSchemeVisible(int zoomLevel) const;
- void RenderTransit(ScreenBase const & screen, int zoomLevel,
- ref_ptr<gpu::ProgramManager> mng,
+ void RenderTransit(ScreenBase const & screen, ref_ptr<gpu::ProgramManager> mng,
ref_ptr<PostprocessRenderer> postprocessRenderer,
dp::UniformValuesStorage const & commonUniforms);
@@ -61,6 +60,8 @@ private:
void RenderStubs(ScreenBase const & screen, ref_ptr<gpu::ProgramManager> mng,
dp::UniformValuesStorage const & commonUniforms);
+ bool HasRenderData() const;
+
uint32_t m_lastRecacheId = 0;
std::vector<TransitRenderData> m_linesRenderData;
std::vector<TransitRenderData> m_linesCapsRenderData;