diff --git a/drape_frontend/apply_feature_functors.cpp b/drape_frontend/apply_feature_functors.cpp index f97d6dde81..a212e06b29 100644 --- a/drape_frontend/apply_feature_functors.cpp +++ b/drape_frontend/apply_feature_functors.cpp @@ -389,10 +389,10 @@ void ApplyAreaFeature::ProcessBuildingPolygon(m2::PointD const & p1, m2::PointD } else { - m_triangles.push_back(p1); - m_triangles.push_back(p3); - m_triangles.push_back(p2); - BuildEdges(GetIndex(p1), GetIndex(p3), GetIndex(p2)); + m_triangles.push_back(p1); + m_triangles.push_back(p3); + m_triangles.push_back(p2); + BuildEdges(GetIndex(p1), GetIndex(p3), GetIndex(p2)); } } diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index c1055d813a..f4114d9880 100755 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -195,7 +195,7 @@ void FrontendRenderer::AfterDrawFrame() #endif -void FrontendRenderer::UpdateFeaturesWaitingStatus() +void FrontendRenderer::UpdateCanBeDeletedStatus() { m2::RectD const & screenRect = m_userEventStream.GetCurrentScreen().ClipRect(); @@ -208,24 +208,27 @@ void FrontendRenderer::UpdateFeaturesWaitingStatus() { for (auto & group : layer.m_renderGroups) { - if (group->IsFeaturesWaiting()) + if (group->IsPendingOnDelete()) { - m2::RectD const tileRect = group->GetTileKey().GetGlobalRect(); - bool waitTileFeatures = false; - if (!notFinishedTileRects.empty() && tileRect.IsIntersect(screenRect)) + bool canBeDeleted = true; + if (!notFinishedTileRects.empty()) { - for (auto const & notFinishedRect : notFinishedTileRects) + m2::RectD const tileRect = group->GetTileKey().GetGlobalRect(); + if (tileRect.IsIntersect(screenRect)) { - if (notFinishedRect.IsIntersect(tileRect)) + for (auto const & notFinishedRect : notFinishedTileRects) { - waitTileFeatures = true; - break; + if (notFinishedRect.IsIntersect(tileRect)) + { + canBeDeleted = false; + break; + } } } } - layer.m_isDirty |= group->UpdateFeaturesWaitingStatus(waitTileFeatures, m_currentZoomLevel, - make_ref(m_overlayTree), m_bucketsToDelete); + layer.m_isDirty |= group->UpdateCanBeDeletedStatus(canBeDeleted, m_currentZoomLevel, + make_ref(m_overlayTree), m_bucketsToDelete); } } } @@ -301,7 +304,7 @@ void FrontendRenderer::AcceptMessage(ref_ptr message) } if (changed) - UpdateFeaturesWaitingStatus(); + UpdateCanBeDeletedStatus(); break; } @@ -1215,7 +1218,7 @@ void FrontendRenderer::ResolveZoomLevel(ScreenBase const & screen) m_currentZoomLevel = GetDrawTileScale(screen); if (prevZoomLevel != m_currentZoomLevel) - UpdateFeaturesWaitingStatus(); + UpdateCanBeDeletedStatus(); CheckIsometryMinScale(screen); CheckPerspectiveMinScale(); diff --git a/drape_frontend/frontend_renderer.hpp b/drape_frontend/frontend_renderer.hpp index 6b95ee10d4..e099d0163e 100755 --- a/drape_frontend/frontend_renderer.hpp +++ b/drape_frontend/frontend_renderer.hpp @@ -216,7 +216,7 @@ private: double rotationAngle, double angleFOV); void InvalidateRect(m2::RectD const & gRect); bool CheckTileGenerations(TileKey const & tileKey); - void UpdateFeaturesWaitingStatus(); + void UpdateCanBeDeletedStatus(); void OnCompassTapped(); diff --git a/drape_frontend/render_group.cpp b/drape_frontend/render_group.cpp index 2a2c1dbccb..6915e46e62 100755 --- a/drape_frontend/render_group.cpp +++ b/drape_frontend/render_group.cpp @@ -46,7 +46,7 @@ bool BaseRenderGroup::IsOverlay() const RenderGroup::RenderGroup(dp::GLState const & state, df::TileKey const & tileKey) : TBase(state, tileKey) , m_pendingOnDelete(false) - , m_featuresWaiting(false) + , m_canBeDeleted(false) { } @@ -139,15 +139,15 @@ bool RenderGroup::IsLess(RenderGroup const & other) const return m_state < other.m_state; } -bool RenderGroup::UpdateFeaturesWaitingStatus(bool waitTileFeatures, int currentZoom, ref_ptr tree, - deque> & bucketsToDelete) +bool RenderGroup::UpdateCanBeDeletedStatus(bool canBeDeleted, int currentZoom, ref_ptr tree, + deque> & bucketsToDelete) { - if (!m_featuresWaiting) + if (!IsPendingOnDelete()) return false; for (size_t i = 0; i < m_renderBuckets.size(); ) { - bool visibleBucket = waitTileFeatures && (m_renderBuckets[i]->GetMinZoom() <= currentZoom); + bool visibleBucket = !canBeDeleted && (m_renderBuckets[i]->GetMinZoom() <= currentZoom); if (!visibleBucket) { m_renderBuckets[i]->RemoveOverlayHandles(tree); @@ -160,8 +160,8 @@ bool RenderGroup::UpdateFeaturesWaitingStatus(bool waitTileFeatures, int current ++i; } } - m_featuresWaiting = !m_renderBuckets.empty(); - return m_renderBuckets.empty(); + m_canBeDeleted = m_renderBuckets.empty(); + return m_canBeDeleted; } bool RenderGroupComparator::operator()(drape_ptr const & l, drape_ptr const & r) diff --git a/drape_frontend/render_group.hpp b/drape_frontend/render_group.hpp index 5cf413a69a..5393c13f8c 100755 --- a/drape_frontend/render_group.hpp +++ b/drape_frontend/render_group.hpp @@ -65,29 +65,19 @@ public: bool IsEmpty() const { return m_renderBuckets.empty(); } - void DeleteLater() const - { - m_featuresWaiting = true; - m_pendingOnDelete = true; - } - - bool IsFeaturesWaiting() const { return m_featuresWaiting; } + void DeleteLater() const { m_pendingOnDelete = true; } bool IsPendingOnDelete() const { return m_pendingOnDelete; } + bool CanBeDeleted() const { return m_canBeDeleted; } - bool CanBeDeleted() const - { - return IsPendingOnDelete() && !IsFeaturesWaiting(); - } - - bool UpdateFeaturesWaitingStatus(bool waitTileFeatures, int currentZoom, ref_ptr tree, - deque> & bucketsToDelete); + bool UpdateCanBeDeletedStatus(bool canBeDeleted, int currentZoom, ref_ptr tree, + deque> & bucketsToDelete); bool IsLess(RenderGroup const & other) const; private: vector > m_renderBuckets; mutable bool m_pendingOnDelete; - mutable bool m_featuresWaiting; + mutable bool m_canBeDeleted; private: friend string DebugPrint(RenderGroup const & group);