From e800f3754758489e09c55e38bebd00c2203e4886 Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Fri, 25 Jan 2019 23:57:47 +0200 Subject: [core] Layer manager is responsible for buckets and layouts creation This is a step to stop using of render layers in tile worker thread. --- src/mbgl/tile/geometry_tile_worker.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/mbgl/tile') diff --git a/src/mbgl/tile/geometry_tile_worker.cpp b/src/mbgl/tile/geometry_tile_worker.cpp index 854bfcf1a4..943e782af1 100644 --- a/src/mbgl/tile/geometry_tile_worker.cpp +++ b/src/mbgl/tile/geometry_tile_worker.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -340,7 +341,6 @@ void GeometryTileWorker::parse() { layouts.clear(); featureIndex = std::make_unique(*data ? (*data)->clone() : nullptr); - BucketParameters parameters { id, mode, pixelRatio }; GlyphDependencies glyphDependencies; ImageDependencies imageDependencies; @@ -359,6 +359,7 @@ void GeometryTileWorker::parse() { } const RenderLayer& leader = *group.at(0); + BucketParameters parameters { id, mode, pixelRatio, leader.baseImpl->getTypeInfo() }; auto geometryLayer = (*data)->getLayer(leader.baseImpl->sourceLayer); if (!geometryLayer) { @@ -377,7 +378,7 @@ void GeometryTileWorker::parse() { // and either immediately create a bucket if no images/glyphs are used, or the Layout is stored until // the images/glyphs are available to add the features to the buckets. if (leader.baseImpl->getTypeInfo()->layout == LayerTypeInfo::Layout::Required) { - auto layout = leader.createLayout(parameters, group, std::move(geometryLayer), glyphDependencies, imageDependencies); + auto layout = LayerManager::get()->createLayout({parameters, glyphDependencies, imageDependencies}, std::move(geometryLayer), group); if (layout->hasDependencies()) { layouts.push_back(std::move(layout)); } else { @@ -386,7 +387,7 @@ void GeometryTileWorker::parse() { } else { const Filter& filter = leader.baseImpl->filter; const std::string& sourceLayerID = leader.baseImpl->sourceLayer; - std::shared_ptr bucket = leader.createBucket(parameters, group); + std::shared_ptr bucket = LayerManager::get()->createBucket(parameters, group); for (std::size_t i = 0; !obsolete && i < geometryLayer->featureCount(); i++) { std::unique_ptr feature = geometryLayer->getFeature(i); -- cgit v1.2.1