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-03-01 17:57:08 +0300
committerSergey Yershov <yershov@corp.mail.ru>2016-03-23 16:52:55 +0300
commit3581b92f8c732cccdfeb7c20da2a31d7e0a13189 (patch)
treee5a7fa5d804c79b3b52f7051e55655bf88f12e10 /drape
parent72dbdb6a1834ec618b3529a99b2130e358f83910 (diff)
Memory feature index removed.
Diffstat (limited to 'drape')
-rw-r--r--drape/batcher.cpp40
-rw-r--r--drape/batcher.hpp23
-rw-r--r--drape/render_bucket.cpp30
-rw-r--r--drape/render_bucket.hpp24
4 files changed, 6 insertions, 111 deletions
diff --git a/drape/batcher.cpp b/drape/batcher.cpp
index 99b8803a44..0153267db0 100644
--- a/drape/batcher.cpp
+++ b/drape/batcher.cpp
@@ -179,29 +179,6 @@ void Batcher::SetFeatureMinZoom(int minZoom)
bucket.second->SetFeatureMinZoom(m_featureMinZoom);
}
-void Batcher::StartFeatureRecord(FeatureGeometryId feature, m2::RectD const & limitRect)
-{
- m_currentFeature = feature;
- m_featureLimitRect = limitRect;
-
- if (!m_currentFeature.IsValid())
- return;
-
- for (auto const & bucket : m_buckets)
- bucket.second->StartFeatureRecord(feature, limitRect);
-}
-
-void Batcher::EndFeatureRecord()
-{
- if (!m_currentFeature.IsValid())
- return;
-
- m_currentFeature = FeatureGeometryId();
-
- for (auto const & bucket : m_buckets)
- bucket.second->EndFeatureRecord(true);
-}
-
void Batcher::ChangeBuffer(ref_ptr<CallbacksWrapper> wrapper)
{
GLState const & state = wrapper->GetState();
@@ -213,31 +190,26 @@ void Batcher::ChangeBuffer(ref_ptr<CallbacksWrapper> wrapper)
ref_ptr<RenderBucket> Batcher::GetBucket(GLState const & state)
{
- TBuckets::iterator it = m_buckets.find(BucketId(state, m_currentFeature.IsValid()));
+ TBuckets::iterator it = m_buckets.find(state);
if (it != m_buckets.end())
return make_ref(it->second);
drape_ptr<VertexArrayBuffer> vao = make_unique_dp<VertexArrayBuffer>(m_indexBufferSize, m_vertexBufferSize);
drape_ptr<RenderBucket> buffer = make_unique_dp<RenderBucket>(move(vao));
ref_ptr<RenderBucket> result = make_ref(buffer);
- if (m_currentFeature.IsValid())
- result->StartFeatureRecord(m_currentFeature, m_featureLimitRect);
result->SetFeatureMinZoom(m_featureMinZoom);
- m_buckets.emplace(BucketId(state, m_currentFeature.IsValid()), move(buffer));
+ m_buckets.emplace(state, move(buffer));
return result;
}
void Batcher::FinalizeBucket(GLState const & state)
{
- BucketId bucketId(state, m_currentFeature.IsValid());
- TBuckets::iterator it = m_buckets.find(bucketId);
+ TBuckets::iterator it = m_buckets.find(state);
ASSERT(it != m_buckets.end(), ("Have no bucket for finalize with given state"));
drape_ptr<RenderBucket> bucket = move(it->second);
- m_buckets.erase(bucketId);
- if (m_currentFeature.IsValid())
- bucket->EndFeatureRecord(false);
+ m_buckets.erase(state);
bucket->GetBuffer()->Preflush();
m_flushInterface(state, move(bucket));
@@ -249,10 +221,8 @@ void Batcher::Flush()
for_each(m_buckets.begin(), m_buckets.end(), [this](TBuckets::value_type & bucket)
{
ASSERT(bucket.second != nullptr, ());
- if (m_currentFeature.IsValid())
- bucket.second->EndFeatureRecord(true);
bucket.second->GetBuffer()->Preflush();
- m_flushInterface(bucket.first.m_state, move(bucket.second));
+ m_flushInterface(bucket.first, move(bucket.second));
});
m_buckets.clear();
diff --git a/drape/batcher.hpp b/drape/batcher.hpp
index d8cc20d346..69466d7670 100644
--- a/drape/batcher.hpp
+++ b/drape/batcher.hpp
@@ -71,33 +71,12 @@ private:
TFlushFn m_flushInterface;
private:
- struct BucketId
- {
- BucketId() = default;
- BucketId(GLState const & state, bool sharedFeatures)
- : m_state(state)
- , m_sharedFeatures(sharedFeatures)
- {}
-
- bool operator < (BucketId const & other) const
- {
- if (m_state != other.m_state)
- return m_state < other.m_state;
- return m_sharedFeatures < other.m_sharedFeatures;
- }
-
- GLState m_state;
- bool m_sharedFeatures = false;
- };
-
- using TBuckets = map<BucketId, drape_ptr<RenderBucket>>;
+ using TBuckets = map<GLState, drape_ptr<RenderBucket>>;
TBuckets m_buckets;
uint32_t m_indexBufferSize;
uint32_t m_vertexBufferSize;
- FeatureGeometryId m_currentFeature;
- m2::RectD m_featureLimitRect;
int m_featureMinZoom = 0;
};
diff --git a/drape/render_bucket.cpp b/drape/render_bucket.cpp
index c18bcd997c..8210088d04 100644
--- a/drape/render_bucket.cpp
+++ b/drape/render_bucket.cpp
@@ -114,36 +114,6 @@ void RenderBucket::SetFeatureMinZoom(int minZoom)
m_featuresMinZoom = minZoom;
}
-void RenderBucket::StartFeatureRecord(FeatureGeometryId feature, const m2::RectD & limitRect)
-{
- m_featureInfo = make_pair(feature, FeatureGeometryInfo(limitRect));
- m_buffer->ResetChangingTracking();
-}
-
-void RenderBucket::EndFeatureRecord(bool featureCompleted)
-{
- ASSERT(m_featureInfo.first.IsValid(), ());
- m_featureInfo.second.m_featureCompleted = featureCompleted;
- if (m_buffer->IsChanged())
- m_featuresGeometryInfo.insert(m_featureInfo);
- m_featureInfo = TFeatureInfo();
-}
-
-void RenderBucket::AddFeaturesInfo(RenderBucket const & bucket)
-{
- for (auto const & info : bucket.m_featuresGeometryInfo)
- m_featuresGeometryInfo.insert(info);
-}
-
-bool RenderBucket::IsFeaturesWaiting(TCheckFeaturesWaiting isFeaturesWaiting)
-{
- ASSERT(IsShared(), ());
- for (auto const & featureRange : m_featuresGeometryInfo)
- if (isFeaturesWaiting(featureRange.second.m_limitRect))
- return true;
- return false;
-}
-
void RenderBucket::RenderDebug(ScreenBase const & screen) const
{
#ifdef RENDER_DEBUG_RECTS
diff --git a/drape/render_bucket.hpp b/drape/render_bucket.hpp
index 809a9b7fba..d4688b4937 100644
--- a/drape/render_bucket.hpp
+++ b/drape/render_bucket.hpp
@@ -51,35 +51,11 @@ public:
todo(make_ref(h));
}
- bool IsShared() const { return !m_featuresGeometryInfo.empty(); }
- void StartFeatureRecord(FeatureGeometryId feature, m2::RectD const & limitRect);
- void EndFeatureRecord(bool featureCompleted);
-
void SetFeatureMinZoom(int minZoom);
int GetMinZoom() const { return m_featuresMinZoom; }
- using TCheckFeaturesWaiting = function<bool(m2::RectD const &)>;
- bool IsFeaturesWaiting(TCheckFeaturesWaiting isFeaturesWaiting);
-
- void AddFeaturesInfo(RenderBucket const & bucket);
-
private:
- struct FeatureGeometryInfo
- {
- FeatureGeometryInfo() = default;
- FeatureGeometryInfo(m2::RectD const & limitRect)
- : m_limitRect(limitRect)
- {}
-
- m2::RectD m_limitRect;
- bool m_featureCompleted = false;
- };
- using TFeaturesGeometryInfo = map<FeatureGeometryId, FeatureGeometryInfo>;
- using TFeatureInfo = pair<FeatureGeometryId, FeatureGeometryInfo>;
-
int m_featuresMinZoom = numeric_limits<int>::max();
- TFeatureInfo m_featureInfo;
- TFeaturesGeometryInfo m_featuresGeometryInfo;
vector<drape_ptr<OverlayHandle> > m_overlay;
drape_ptr<VertexArrayBuffer> m_buffer;