summaryrefslogtreecommitdiff
path: root/src/mbgl/tile/geometry_tile_worker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/tile/geometry_tile_worker.cpp')
-rw-r--r--src/mbgl/tile/geometry_tile_worker.cpp34
1 files changed, 7 insertions, 27 deletions
diff --git a/src/mbgl/tile/geometry_tile_worker.cpp b/src/mbgl/tile/geometry_tile_worker.cpp
index 56f6401ce7..ad9de2c07b 100644
--- a/src/mbgl/tile/geometry_tile_worker.cpp
+++ b/src/mbgl/tile/geometry_tile_worker.cpp
@@ -139,7 +139,7 @@ void GeometryTileWorker::setData(std::unique_ptr<const GeometryTileData> data_,
}
}
-void GeometryTileWorker::setLayers(std::vector<Immutable<Layer::Impl>> layers_, uint64_t correlationID_) {
+void GeometryTileWorker::setLayers(std::vector<Immutable<LayerProperties>> layers_, uint64_t correlationID_) {
try {
layers = std::move(layers_);
correlationID = correlationID_;
@@ -312,25 +312,6 @@ void GeometryTileWorker::requestNewImages(const ImageDependencies& imageDependen
}
}
-static std::vector<Immutable<style::LayerProperties>> toEvaluatedProperties(const std::vector<Immutable<style::Layer::Impl>>& layers, float zoom) {
- std::vector<Immutable<style::LayerProperties>> result;
- result.reserve(layers.size());
- for (auto& layer : layers) {
- auto renderLayer = LayerManager::get()->createRenderLayer(layer);
-
- renderLayer->transition(TransitionParameters {
- Clock::time_point::max(),
- TransitionOptions()
- });
-
- renderLayer->evaluate(PropertyEvaluationParameters {
- zoom
- });
- result.push_back(renderLayer->evaluatedProperties);
- }
- return result;
-}
-
void GeometryTileWorker::parse() {
if (!data || !layers) {
return;
@@ -340,7 +321,7 @@ void GeometryTileWorker::parse() {
std::unordered_map<std::string, std::unique_ptr<SymbolLayout>> symbolLayoutMap;
- buckets.clear();
+ renderData.clear();
layouts.clear();
featureIndex = std::make_unique<FeatureIndex>(*data ? (*data)->clone() : nullptr);
@@ -349,9 +330,8 @@ void GeometryTileWorker::parse() {
ImageDependencies imageDependencies;
// Create render layers and group by layout
- std::vector<Immutable<style::LayerProperties>> evaluatedProperties = toEvaluatedProperties(*layers, id.overscaledZ);
std::unordered_map<std::string, std::vector<Immutable<style::LayerProperties>>> groupMap;
- for (auto layer : evaluatedProperties) {
+ for (auto layer : *layers) {
groupMap[layoutKey(*layer->baseImpl)].push_back(std::move(layer));
}
@@ -389,7 +369,7 @@ void GeometryTileWorker::parse() {
if (layout->hasDependencies()) {
layouts.push_back(std::move(layout));
} else {
- layout->createBucket({}, featureIndex, buckets, firstLoad, showCollisionBoxes);
+ layout->createBucket({}, featureIndex, renderData, firstLoad, showCollisionBoxes);
}
} else {
const Filter& filter = leaderImpl.filter;
@@ -412,7 +392,7 @@ void GeometryTileWorker::parse() {
}
for (const auto& layer : group) {
- buckets.emplace(layer->baseImpl->id, bucket);
+ renderData.emplace(layer->baseImpl->id, LayerRenderData{bucket, layer});
}
}
}
@@ -466,7 +446,7 @@ void GeometryTileWorker::finalizeLayout() {
}
// layout adds the bucket to buckets
- layout->createBucket(iconAtlas.patternPositions, featureIndex, buckets, firstLoad, showCollisionBoxes);
+ layout->createBucket(iconAtlas.patternPositions, featureIndex, renderData, firstLoad, showCollisionBoxes);
}
}
@@ -481,7 +461,7 @@ void GeometryTileWorker::finalizeLayout() {
" Time");
parent.invoke(&GeometryTile::onLayout, GeometryTile::LayoutResult {
- std::move(buckets),
+ std::move(renderData),
std::move(featureIndex),
std::move(glyphAtlasImage),
std::move(iconAtlas)