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
path: root/drape
diff options
context:
space:
mode:
authorDaria Volvenkova <d.volvenkova@corp.mail.ru>2016-02-05 17:31:48 +0300
committerSergey Yershov <yershov@corp.mail.ru>2016-03-23 16:20:42 +0300
commit498a9f03e1c940aa2e361dd48603ad229f76895e (patch)
tree4ee8b968c44b96f1830eabfe5a1670fc253dd8fd /drape
parentebc3703d36dcbb5ee6863b6a13e6b70fefcf6c2d (diff)
Overlay rects collecting fixed.
Diffstat (limited to 'drape')
-rw-r--r--drape/render_bucket.cpp4
-rw-r--r--drape/render_bucket.hpp1
-rw-r--r--drape/vertex_array_buffer.cpp3
-rw-r--r--drape/vertex_array_buffer.hpp4
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