diff options
Diffstat (limited to 'src/mbgl/map')
-rw-r--r-- | src/mbgl/map/tile_worker.cpp | 8 | ||||
-rw-r--r-- | src/mbgl/map/tile_worker.hpp | 12 | ||||
-rw-r--r-- | src/mbgl/map/vector_tile_data.cpp | 8 | ||||
-rw-r--r-- | src/mbgl/map/vector_tile_data.hpp | 1 |
4 files changed, 16 insertions, 13 deletions
diff --git a/src/mbgl/map/tile_worker.cpp b/src/mbgl/map/tile_worker.cpp index 96300a803f..0262ed420c 100644 --- a/src/mbgl/map/tile_worker.cpp +++ b/src/mbgl/map/tile_worker.cpp @@ -18,10 +18,8 @@ using namespace mbgl; TileWorker::TileWorker(TileID id_, std::string sourceID_, Style& style_, - std::vector<util::ptr<StyleLayer>> layers_, const std::atomic<TileData::State>& state_) - : layers(std::move(layers_)), - id(id_), + : id(id_), sourceID(sourceID_), parameters(id.z), style(style_), @@ -33,7 +31,8 @@ TileWorker::~TileWorker() { style.glyphAtlas->removeGlyphs(reinterpret_cast<uintptr_t>(this)); } -TileParseResult TileWorker::parseAllLayers(const GeometryTile& geometryTile, +TileParseResult TileWorker::parseAllLayers(std::vector<util::ptr<StyleLayer>> layers, + const GeometryTile& geometryTile, PlacementConfig config) { // We're doing a fresh parse of the tile, because the underlying data has changed. pending.clear(); @@ -85,6 +84,7 @@ TileParseResult TileWorker::parsePendingLayers() { } void TileWorker::redoPlacement( + std::vector<util::ptr<StyleLayer>> layers, const std::unordered_map<std::string, std::unique_ptr<Bucket>>* buckets, PlacementConfig config) { diff --git a/src/mbgl/map/tile_worker.hpp b/src/mbgl/map/tile_worker.hpp index 44868a12ff..fc6844445c 100644 --- a/src/mbgl/map/tile_worker.hpp +++ b/src/mbgl/map/tile_worker.hpp @@ -42,16 +42,18 @@ public: TileWorker(TileID, std::string sourceID, Style&, - std::vector<util::ptr<StyleLayer>>, const std::atomic<TileData::State>&); ~TileWorker(); - TileParseResult parseAllLayers(const GeometryTile&, PlacementConfig); + TileParseResult parseAllLayers(std::vector<util::ptr<StyleLayer>>, + const GeometryTile&, + PlacementConfig); + TileParseResult parsePendingLayers(); - void redoPlacement(const std::unordered_map<std::string, std::unique_ptr<Bucket>>*, - PlacementConfig); - std::vector<util::ptr<StyleLayer>> layers; + void redoPlacement(std::vector<util::ptr<StyleLayer>>, + const std::unordered_map<std::string, std::unique_ptr<Bucket>>*, + PlacementConfig); private: void parseLayer(const StyleLayer&, const GeometryTile&); diff --git a/src/mbgl/map/vector_tile_data.cpp b/src/mbgl/map/vector_tile_data.cpp index 90603c0a64..0f383295fd 100644 --- a/src/mbgl/map/vector_tile_data.cpp +++ b/src/mbgl/map/vector_tile_data.cpp @@ -16,16 +16,16 @@ VectorTileData::VectorTileData(const TileID& id_, Style& style_, const std::function<void()>& callback) : TileData(id_), + style(style_), worker(style_.workers), tileWorker(id_, sourceID, style_, - style_.layers, state), monitor(std::move(monitor_)) { state = State::loading; - req = monitor->monitorTile([callback, sourceID, this](std::exception_ptr err, std::unique_ptr<GeometryTile> tile) { + req = monitor->monitorTile([callback, this](std::exception_ptr err, std::unique_ptr<GeometryTile> tile) { if (err) { try { std::rethrow_exception(err); @@ -54,7 +54,7 @@ VectorTileData::VectorTileData(const TileID& id_, // when tile data changed. Replacing the workdRequest will cancel a pending work // request in case there is one. workRequest.reset(); - workRequest = worker.parseGeometryTile(tileWorker, std::move(tile), targetConfig, [callback, sourceID, this, config = targetConfig] (TileParseResult result) { + workRequest = worker.parseGeometryTile(tileWorker, style.layers, std::move(tile), targetConfig, [callback, this, config = targetConfig] (TileParseResult result) { workRequest.reset(); if (state == State::obsolete) { return; @@ -162,7 +162,7 @@ void VectorTileData::redoPlacement(const PlacementConfig newConfig) { void VectorTileData::redoPlacement() { workRequest.reset(); - workRequest = worker.redoPlacement(tileWorker, buckets, targetConfig, [this, config = targetConfig] { + workRequest = worker.redoPlacement(tileWorker, style.layers, buckets, targetConfig, [this, config = targetConfig] { workRequest.reset(); // Persist the configuration we just placed so that we can later check whether we need to diff --git a/src/mbgl/map/vector_tile_data.hpp b/src/mbgl/map/vector_tile_data.hpp index 1a082fc610..81064e3133 100644 --- a/src/mbgl/map/vector_tile_data.hpp +++ b/src/mbgl/map/vector_tile_data.hpp @@ -36,6 +36,7 @@ public: void cancel() override; private: + Style& style; Worker& worker; TileWorker tileWorker; |