diff options
author | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2016-02-05 17:31:48 +0300 |
---|---|---|
committer | Sergey Yershov <yershov@corp.mail.ru> | 2016-03-23 16:20:42 +0300 |
commit | 498a9f03e1c940aa2e361dd48603ad229f76895e (patch) | |
tree | 4ee8b968c44b96f1830eabfe5a1670fc253dd8fd /drape | |
parent | ebc3703d36dcbb5ee6863b6a13e6b70fefcf6c2d (diff) |
Overlay rects collecting fixed.
Diffstat (limited to 'drape')
-rw-r--r-- | drape/render_bucket.cpp | 4 | ||||
-rw-r--r-- | drape/render_bucket.hpp | 1 | ||||
-rw-r--r-- | drape/vertex_array_buffer.cpp | 3 | ||||
-rw-r--r-- | drape/vertex_array_buffer.hpp | 4 |
4 files changed, 9 insertions, 3 deletions
diff --git a/drape/render_bucket.cpp b/drape/render_bucket.cpp index 7725931beb..1b5576565e 100644 --- a/drape/render_bucket.cpp +++ b/drape/render_bucket.cpp @@ -106,7 +106,7 @@ void RenderBucket::StartFeatureRecord(FeatureGeometryId feature, const m2::RectD { m_featureInfo = feature; m_featureLimitRect = limitRect; - m_featureStartIndex = m_buffer->GetIndexCount(); + m_buffer->ResetChangingTracking(); m_featuresRanges.insert(make_pair(feature, FeatureGeometryInfo(limitRect))); } @@ -115,7 +115,7 @@ void RenderBucket::EndFeatureRecord(bool featureCompleted) auto it = m_featuresRanges.find(m_featureInfo); ASSERT(it != m_featuresRanges.end(), ()); it->second.m_featureCompleted = featureCompleted; - if (m_featureStartIndex == m_buffer->GetIndexCount()) + if (!m_buffer->IsChanged()) m_featuresRanges.erase(it); m_featureInfo = FeatureGeometryId(); } diff --git a/drape/render_bucket.hpp b/drape/render_bucket.hpp index bc50ee6da1..7a011a6812 100644 --- a/drape/render_bucket.hpp +++ b/drape/render_bucket.hpp @@ -69,7 +69,6 @@ private: FeatureGeometryId m_featureInfo; m2::RectD m_featureLimitRect; - uint32_t m_featureStartIndex; TFeaturesRanges m_featuresRanges; vector<drape_ptr<OverlayHandle> > m_overlay; diff --git a/drape/vertex_array_buffer.cpp b/drape/vertex_array_buffer.cpp index b4ea02b6b9..59e171878c 100644 --- a/drape/vertex_array_buffer.cpp +++ b/drape/vertex_array_buffer.cpp @@ -16,6 +16,7 @@ VertexArrayBuffer::VertexArrayBuffer(uint32_t indexBufferSize, uint32_t dataBuff , m_program() , m_isPreflushed(false) , m_moveToGpuOnBuild(false) + , m_isChanged(false) { m_indexBuffer = make_unique_dp<IndexBuffer>(indexBufferSize); @@ -120,6 +121,8 @@ void VertexArrayBuffer::UploadData(BindingInfo const & bindingInfo, void const * else buffer = GetOrCreateDynamicBuffer(bindingInfo); + if (count > 0) + m_isChanged = true; buffer->GetBuffer()->UploadData(data, count); } diff --git a/drape/vertex_array_buffer.hpp b/drape/vertex_array_buffer.hpp index 24696c20e2..7083e816d8 100644 --- a/drape/vertex_array_buffer.hpp +++ b/drape/vertex_array_buffer.hpp @@ -66,6 +66,9 @@ public: void ApplyMutation(ref_ptr<IndexBufferMutator> indexMutator, ref_ptr<AttributeBufferMutator> attrMutator); + void ResetChangingTracking() { m_isChanged = false; } + bool IsChanged() { return m_isChanged; } + private: ref_ptr<DataBuffer> GetOrCreateStaticBuffer(BindingInfo const & bindingInfo); ref_ptr<DataBuffer> GetOrCreateDynamicBuffer(BindingInfo const & bindingInfo); @@ -95,6 +98,7 @@ private: bool m_isPreflushed; bool m_moveToGpuOnBuild; + bool m_isChanged; }; } // namespace dp |