From c30bfa948a7de7dd87904df28a3697319d135124 Mon Sep 17 00:00:00 2001 From: vng Date: Wed, 2 Oct 2013 12:52:46 +0300 Subject: [PATCH] Simplify logic in getting country index (call Framework::GetCountryIndex in main thread). --- map/basic_tiling_render_policy.cpp | 7 ---- map/basic_tiling_render_policy.hpp | 2 - map/coverage_generator.cpp | 65 +++++------------------------- map/coverage_generator.hpp | 19 +-------- map/framework.cpp | 4 +- map/render_policy.cpp | 7 +--- map/render_policy.hpp | 10 +---- map/tiling_render_policy_mt.cpp | 7 +--- map/tiling_render_policy_mt.hpp | 2 +- map/tiling_render_policy_st.cpp | 8 ++-- map/tiling_render_policy_st.hpp | 2 +- 11 files changed, 21 insertions(+), 112 deletions(-) diff --git a/map/basic_tiling_render_policy.cpp b/map/basic_tiling_render_policy.cpp index 47ddc0d07c..c98204f579 100644 --- a/map/basic_tiling_render_policy.cpp +++ b/map/basic_tiling_render_policy.cpp @@ -91,8 +91,6 @@ void BasicTilingRenderPolicy::DrawFrame(shared_ptr const & e, Screen m_CoverageGenerator->Draw(pDrawer->screen(), s); m_IsEmptyModel = m_CoverageGenerator->IsEmptyDrawing(); - if (m_IsEmptyModel) - m_countryIndex = m_CoverageGenerator->GetCountryIndexAtCenter(); pDrawer->endFrame(); } @@ -185,11 +183,6 @@ bool BasicTilingRenderPolicy::IsEmptyModel() const return m_IsEmptyModel; } -storage::TIndex BasicTilingRenderPolicy::GetCountryIndex() const -{ - return m_countryIndex; -} - bool BasicTilingRenderPolicy::NeedRedraw() const { if (RenderPolicy::NeedRedraw()) diff --git a/map/basic_tiling_render_policy.hpp b/map/basic_tiling_render_policy.hpp index e14560b860..4543f3ec03 100644 --- a/map/basic_tiling_render_policy.hpp +++ b/map/basic_tiling_render_policy.hpp @@ -35,7 +35,6 @@ protected: ScreenBase m_CurrentScreen; bool m_IsEmptyModel; - storage::TIndex m_countryIndex; bool m_IsNavigating; bool m_WasAnimatingLastFrame; size_t m_TileSize; @@ -73,7 +72,6 @@ public: bool NeedRedraw() const; bool IsTiling() const; bool IsEmptyModel() const; - storage::TIndex GetCountryIndex() const; size_t TileSize() const; void FrameLock(); diff --git a/map/coverage_generator.cpp b/map/coverage_generator.cpp index a3347eb7ca..053d8586d9 100644 --- a/map/coverage_generator.cpp +++ b/map/coverage_generator.cpp @@ -1,11 +1,10 @@ -#include "../base/SRC_FIRST.hpp" -#include "../platform/settings.hpp" -#include "../platform/platform.hpp" - #include "coverage_generator.hpp" #include "tile_renderer.hpp" #include "tile_set.hpp" +#include "../platform/settings.hpp" +#include "../platform/platform.hpp" + #include "../graphics/opengl/gl_render_context.hpp" #include "../graphics/display_list.hpp" @@ -13,14 +12,13 @@ #include "../std/bind.hpp" + CoverageGenerator::CoverageGenerator(TileRenderer * tileRenderer, shared_ptr const & windowHandle, shared_ptr const & primaryRC, shared_ptr const & rm, - graphics::PacketsQueue * glQueue, - RenderPolicy::TCountryIndexFn const & countryIndexFn) + graphics::PacketsQueue * glQueue) : m_coverageInfo(tileRenderer) - , m_indexInfo(countryIndexFn) , m_queue(1) , m_windowHandle(windowHandle) { @@ -133,11 +131,6 @@ void CoverageGenerator::MergeTile(Tiler::RectInfo const & rectInfo, m_queue.AddCommand(bind(&CoverageGenerator::MergeTileImpl, this, _1, rectInfo, sequenceID)); } -void CoverageGenerator::CheckEmptyModel(int sequenceID) -{ - m_queue.AddCommand(bind(&CoverageGenerator::CheckEmptyModelImpl, this, sequenceID)); -} - void CoverageGenerator::FinishSequenceIfNeeded() { m_queue.AddCommand(bind(&CoverageGenerator::BenchmarkInfo::TryFinishSequence, &m_benchmarkInfo)); @@ -167,16 +160,6 @@ void CoverageGenerator::Draw(graphics::Screen * s, ScreenBase const & screen) FinishSequenceIfNeeded(); } -storage::TIndex CoverageGenerator::GetCountryIndex(m2::PointD const & pt) const -{ - return m_indexInfo.m_countryIndexFn(pt); -} - -storage::TIndex CoverageGenerator::GetCountryIndexAtCenter() const -{ - return m_indexInfo.m_countryIndex; -} - graphics::Overlay * CoverageGenerator::GetOverlay() const { return m_coverageInfo.m_overlay; @@ -226,11 +209,7 @@ void CoverageGenerator::CoverScreenImpl(core::CommandsQueue::Environment const & ComputeCoverTasks(); - if (IsBackEmptyDrawing()) - CheckEmptyModelImpl(sequenceID); - - bool shouldSwap = !m_stateInfo.m_isPause && CacheCoverage(env); - + bool const shouldSwap = !m_stateInfo.m_isPause && CacheCoverage(env); if (shouldSwap) { threads::MutexGuard g(m_stateInfo.m_mutex); @@ -238,11 +217,12 @@ void CoverageGenerator::CoverScreenImpl(core::CommandsQueue::Environment const & } else { - /// we should skip all the following MergeTile commands + // we should skip all the following MergeTile commands ++m_stateInfo.m_sequenceID; } m_stateInfo.SetForceUpdate(!shouldSwap); + m_windowHandle->invalidate(); } @@ -261,11 +241,7 @@ void CoverageGenerator::MergeTileImpl(core::CommandsQueue::Environment const & e m_backCoverage->m_renderLeafTilesCount = m_currentCoverage->m_renderLeafTilesCount; MergeSingleTile(rectInfo); - if (IsBackEmptyDrawing()) - CheckEmptyModelImpl(sequenceID); - - bool shouldSwap = !m_stateInfo.m_isPause && CacheCoverage(env); - + bool const shouldSwap = !m_stateInfo.m_isPause && CacheCoverage(env); if (shouldSwap) { threads::MutexGuard g(m_stateInfo.m_mutex); @@ -329,20 +305,6 @@ void CoverageGenerator::InvalidateTilesImpl(m2::AnyRectD const & r, int startSca MergeOverlay(); } -void CoverageGenerator::CheckEmptyModelImpl(int sequenceID) -{ - if (sequenceID < m_stateInfo.m_sequenceID) - return; - - if (IsBackEmptyDrawing() || IsEmptyDrawing()) - { - m2::PointD const centerPt = m_stateInfo.m_currentScreen.GlobalRect().GetGlobalRect().Center(); - m_indexInfo.m_countryIndex = GetCountryIndex(centerPt); - } - - m_windowHandle->invalidate(); -} - //////////////////////////////////////////////////////////// /// Support methods //////////////////////////////////////////////////////////// @@ -722,15 +684,6 @@ CoverageGenerator::CoverageInfo::~CoverageInfo() delete m_overlay; } -//////////////////////////////////////////////////////////// -/// IndexInfo -//////////////////////////////////////////////////////////// -CoverageGenerator::IndexInfo::IndexInfo(RenderPolicy::TCountryIndexFn indexFn) - : m_countryIndexFn(indexFn) - , m_countryIndex() -{ -} - CoverageGenerator::CachedCoverageInfo::CachedCoverageInfo() : m_mainElements(NULL) , m_sharpElements(NULL) diff --git a/map/coverage_generator.hpp b/map/coverage_generator.hpp index 36ec9ebbc7..6fcb0bf135 100644 --- a/map/coverage_generator.hpp +++ b/map/coverage_generator.hpp @@ -45,8 +45,7 @@ public: shared_ptr const & windowHandle, shared_ptr const & primaryRC, shared_ptr const & rm, - graphics::PacketsQueue * glQueue, - RenderPolicy::TCountryIndexFn const & countryIndexFn); + graphics::PacketsQueue * glQueue); ~CoverageGenerator(); @@ -64,9 +63,6 @@ public: void Draw(graphics::Screen * s, ScreenBase const & screen); - storage::TIndex GetCountryIndex(m2::PointD const & pt) const; - storage::TIndex GetCountryIndexAtCenter() const; - //@{ Frame lock void Lock(); void Unlock(); @@ -89,9 +85,7 @@ private: shared_ptr resourceManager); //@} - void MergeTile(Tiler::RectInfo const & rectInfo, - int sequenceID); - void CheckEmptyModel(int sequenceID); + void MergeTile(Tiler::RectInfo const & rectInfo, int sequenceID); private: void CoverScreenImpl(core::CommandsQueue::Environment const & env, @@ -104,7 +98,6 @@ private: void InvalidateTilesImpl(m2::AnyRectD const & rect, int startScale); - void CheckEmptyModelImpl(int sequenceID); bool IsBackEmptyDrawing() const; private: @@ -168,14 +161,6 @@ private: graphics::Overlay * m_overlay; } m_coverageInfo; - struct IndexInfo - { - IndexInfo(RenderPolicy::TCountryIndexFn indexFn); - - RenderPolicy::TCountryIndexFn m_countryIndexFn; - storage::TIndex m_countryIndex; - } m_indexInfo; - struct CachedCoverageInfo { CachedCoverageInfo(); diff --git a/map/framework.cpp b/map/framework.cpp index a86cb8a696..0514fffd97 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -785,7 +785,7 @@ void Framework::DrawAdditionalInfo(shared_ptr const & e) bool const isEmptyModel = m_renderPolicy->IsEmptyModel(); if (isEmptyModel) - m_informationDisplay.setEmptyCountryIndex(m_renderPolicy->GetCountryIndex()); + m_informationDisplay.setEmptyCountryIndex(GetCountryIndex(GetViewportCenter())); m_informationDisplay.enableCountryStatusDisplay(isEmptyModel); m_informationDisplay.enableCompassArrow(m_navigator.Screen().GetAngle() != 0); @@ -1314,8 +1314,6 @@ void Framework::SetRenderPolicy(RenderPolicy * renderPolicy) if (m_renderPolicy) { - m_renderPolicy->SetCountryIndexFn(bind(&Framework::GetCountryIndex, this, _1)); - m_renderPolicy->SetAnimController(m_animController.get()); m_navigator.SetSupportRotation(m_renderPolicy->DoSupportRotation()); diff --git a/map/render_policy.cpp b/map/render_policy.cpp index ea64fd3fab..387e0361d2 100644 --- a/map/render_policy.cpp +++ b/map/render_policy.cpp @@ -162,16 +162,11 @@ graphics::GlyphCache * RenderPolicy::GetGlyphCache() const return m_resourceManager->glyphCache(m_resourceManager->guiThreadSlot()); } -void RenderPolicy::SetRenderFn(TRenderFn renderFn) +void RenderPolicy::SetRenderFn(TRenderFn const & renderFn) { m_renderFn = renderFn; } -void RenderPolicy::SetCountryIndexFn(TCountryIndexFn const & fn) -{ - m_countryIndexFn = fn; -} - bool RenderPolicy::DoForceUpdate() const { return m_doForceUpdate; diff --git a/map/render_policy.hpp b/map/render_policy.hpp index 8b1b8ff5a5..690a13d6a0 100644 --- a/map/render_policy.hpp +++ b/map/render_policy.hpp @@ -2,8 +2,6 @@ #include "drawer.hpp" -#include "../storage/index.hpp" - #include "../graphics/color.hpp" #include "../geometry/rect2d.hpp" @@ -47,9 +45,6 @@ public: m2::RectD const &, int)> TRenderFn; - typedef function TEmptyModelFn; - typedef function TCountryIndexFn; - protected: graphics::Color m_bgColor; @@ -60,7 +55,6 @@ protected: shared_ptr m_windowHandle; shared_ptr m_drawer; TRenderFn m_renderFn; - TCountryIndexFn m_countryIndexFn; bool m_doSupportRotation; bool m_doForceUpdate; m2::AnyRectD m_invalidRect; @@ -118,9 +112,8 @@ public: /// @} /// the start point of rendering in renderpolicy. - virtual void SetRenderFn(TRenderFn renderFn); + virtual void SetRenderFn(TRenderFn const & renderFn); - void SetCountryIndexFn(TCountryIndexFn const & fn); void SetAnimController(anim::Controller * controller); bool DoSupportRotation() const; @@ -128,7 +121,6 @@ public: virtual bool NeedRedraw() const; virtual bool IsEmptyModel() const; - virtual storage::TIndex GetCountryIndex() const { return storage::TIndex(); } bool DoForceUpdate() const; void SetForceUpdate(bool flag); diff --git a/map/tiling_render_policy_mt.cpp b/map/tiling_render_policy_mt.cpp index f6a0b89a3a..42fc068e9d 100644 --- a/map/tiling_render_policy_mt.cpp +++ b/map/tiling_render_policy_mt.cpp @@ -67,10 +67,8 @@ TilingRenderPolicyMT::~TilingRenderPolicyMT() m_TileRenderer.reset(); } -void TilingRenderPolicyMT::SetRenderFn(TRenderFn renderFn) +void TilingRenderPolicyMT::SetRenderFn(TRenderFn const & renderFn) { - string skinName = SkinName(); - m_TileRenderer.reset(new TileRenderer(TileSize(), GetPlatform().CpuCores(), m_bgColor, @@ -84,6 +82,5 @@ void TilingRenderPolicyMT::SetRenderFn(TRenderFn renderFn) m_windowHandle, m_primaryRC, m_resourceManager, - 0, - m_countryIndexFn)); + 0)); } diff --git a/map/tiling_render_policy_mt.hpp b/map/tiling_render_policy_mt.hpp index 587569018c..ca3c308536 100644 --- a/map/tiling_render_policy_mt.hpp +++ b/map/tiling_render_policy_mt.hpp @@ -21,5 +21,5 @@ public: ~TilingRenderPolicyMT(); - void SetRenderFn(TRenderFn renderFn); + void SetRenderFn(TRenderFn const & renderFn); }; diff --git a/map/tiling_render_policy_st.cpp b/map/tiling_render_policy_st.cpp index 293d8f4703..8a4f6b6dfc 100644 --- a/map/tiling_render_policy_st.cpp +++ b/map/tiling_render_policy_st.cpp @@ -92,10 +92,9 @@ TilingRenderPolicyST::~TilingRenderPolicyST() LOG(LINFO, ("done reseting tileRenderer")); } -void TilingRenderPolicyST::SetRenderFn(TRenderFn renderFn) +void TilingRenderPolicyST::SetRenderFn(TRenderFn const & renderFn) { - int cpuCores = GetPlatform().CpuCores(); - string skinName = SkinName(); + int const cpuCores = GetPlatform().CpuCores(); graphics::PacketsQueue ** queues = new graphics::PacketsQueue*[cpuCores]; @@ -120,6 +119,5 @@ void TilingRenderPolicyST::SetRenderFn(TRenderFn renderFn) m_windowHandle, m_primaryRC, m_resourceManager, - m_QueuedRenderer->GetPacketsQueue(cpuCores), - m_countryIndexFn)); + m_QueuedRenderer->GetPacketsQueue(cpuCores))); } diff --git a/map/tiling_render_policy_st.hpp b/map/tiling_render_policy_st.hpp index 157d312a9a..771a615ce0 100644 --- a/map/tiling_render_policy_st.hpp +++ b/map/tiling_render_policy_st.hpp @@ -10,5 +10,5 @@ public: ~TilingRenderPolicyST(); - void SetRenderFn(TRenderFn renderFn); + void SetRenderFn(TRenderFn const & renderFn); };