diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2015-06-18 18:23:03 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2015-07-01 15:21:08 -0700 |
commit | 4eff674c1d4caaf0ce624fe5db086f0d79d0d31f (patch) | |
tree | a6bef058da89bb8bba0047620b0e43a55c0385f7 | |
parent | 424629d7fc777d274541629eecd252e404eadf2b (diff) | |
download | qtlocation-mapboxgl-4eff674c1d4caaf0ce624fe5db086f0d79d0d31f.tar.gz |
Revert "Do not hold a reference to the Style at the [Live|Vector]TileData"
This reverts commit 044454417b61bdd102a376c1125ad6ee3a5eacd4.
-rw-r--r-- | src/mbgl/map/live_tile_data.cpp | 7 | ||||
-rw-r--r-- | src/mbgl/map/live_tile_data.hpp | 3 | ||||
-rw-r--r-- | src/mbgl/map/source.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/map/tile_parser.cpp | 7 | ||||
-rw-r--r-- | src/mbgl/map/tile_parser.hpp | 7 | ||||
-rw-r--r-- | src/mbgl/map/vector_tile_data.cpp | 16 | ||||
-rw-r--r-- | src/mbgl/map/vector_tile_data.hpp | 7 |
7 files changed, 24 insertions, 27 deletions
diff --git a/src/mbgl/map/live_tile_data.cpp b/src/mbgl/map/live_tile_data.cpp index ccae542ee2..4935c01345 100644 --- a/src/mbgl/map/live_tile_data.cpp +++ b/src/mbgl/map/live_tile_data.cpp @@ -10,8 +10,7 @@ using namespace mbgl; LiveTileData::LiveTileData(const TileID& id_, AnnotationManager& annotationManager_, - const std::vector<util::ptr<StyleLayer>>& layers_, - Worker& workers_, + Style& style_, GlyphAtlas& glyphAtlas_, GlyphStore& glyphStore_, SpriteAtlas& spriteAtlas_, @@ -19,7 +18,7 @@ LiveTileData::LiveTileData(const TileID& id_, const SourceInfo& source_, float angle_, bool collisionDebug_) - : VectorTileData::VectorTileData(id_, layers_, workers_, glyphAtlas_, glyphStore_, + : VectorTileData::VectorTileData(id_, style_, glyphAtlas_, glyphStore_, spriteAtlas_, sprite_, source_, angle_, collisionDebug_), annotationManager(annotationManager_) { // live features are always ready @@ -44,7 +43,7 @@ void LiveTileData::parse() { // Parsing creates state that is encapsulated in TileParser. While parsing, // the TileParser object writes results into this objects. All other state // is going to be discarded afterwards. - TileParser parser(*tile, *this, layers, glyphAtlas, glyphStore, spriteAtlas, sprite); + TileParser parser(*tile, *this, style, glyphAtlas, glyphStore, spriteAtlas, sprite); parser.parse(); } catch (const std::exception& ex) { Log::Error(Event::ParseTile, "Live-parsing [%d/%d/%d] failed: %s", id.z, id.x, id.y, ex.what()); diff --git a/src/mbgl/map/live_tile_data.hpp b/src/mbgl/map/live_tile_data.hpp index 57d2e8c0d3..1620671230 100644 --- a/src/mbgl/map/live_tile_data.hpp +++ b/src/mbgl/map/live_tile_data.hpp @@ -11,8 +11,7 @@ class LiveTileData : public VectorTileData { public: LiveTileData(const TileID&, AnnotationManager&, - const std::vector<util::ptr<StyleLayer>>&, - Worker&, + Style&, GlyphAtlas&, GlyphStore&, SpriteAtlas&, diff --git a/src/mbgl/map/source.cpp b/src/mbgl/map/source.cpp index b073321a77..7dd91804b5 100644 --- a/src/mbgl/map/source.cpp +++ b/src/mbgl/map/source.cpp @@ -295,7 +295,7 @@ TileData::State Source::addTile(MapData& data, // If we don't find working tile data, we're just going to load it. if (info.type == SourceType::Vector) { new_tile.data = - std::make_shared<VectorTileData>(normalized_id, style.layers, style.workers, glyphAtlas, + std::make_shared<VectorTileData>(normalized_id, style, glyphAtlas, glyphStore, spriteAtlas, sprite, info, transformState.getAngle(), data.getCollisionDebug()); new_tile.data->request(style.workers, transformState.getPixelRatio(), callback); @@ -305,7 +305,7 @@ TileData::State Source::addTile(MapData& data, style.workers, transformState.getPixelRatio(), callback); } else if (info.type == SourceType::Annotations) { new_tile.data = std::make_shared<LiveTileData>(normalized_id, data.annotationManager, - style.layers, style.workers, glyphAtlas, + style, glyphAtlas, glyphStore, spriteAtlas, sprite, info, transformState.getAngle(), data.getCollisionDebug()); new_tile.data->reparse(style.workers, callback); diff --git a/src/mbgl/map/tile_parser.cpp b/src/mbgl/map/tile_parser.cpp index 1ddf07ae9e..61af227034 100644 --- a/src/mbgl/map/tile_parser.cpp +++ b/src/mbgl/map/tile_parser.cpp @@ -8,6 +8,7 @@ #include <mbgl/renderer/line_bucket.hpp> #include <mbgl/renderer/symbol_bucket.hpp> #include <mbgl/util/constants.hpp> +#include <mbgl/style/style.hpp> #include <locale> @@ -20,14 +21,14 @@ TileParser::~TileParser() = default; TileParser::TileParser(const GeometryTile& geometryTile_, VectorTileData& tile_, - const std::vector<util::ptr<StyleLayer>>& layers_, + const Style& style_, GlyphAtlas& glyphAtlas_, GlyphStore& glyphStore_, SpriteAtlas& spriteAtlas_, const util::ptr<Sprite>& sprite_) : geometryTile(geometryTile_), tile(tile_), - layers(layers_), + style(style_), glyphAtlas(glyphAtlas_), glyphStore(glyphStore_), spriteAtlas(spriteAtlas_), @@ -41,7 +42,7 @@ bool TileParser::obsolete() const { } void TileParser::parse() { - for (const auto& layer_desc : layers) { + for (const auto& layer_desc : style.layers) { // Cancel early when parsing. if (obsolete()) { return; diff --git a/src/mbgl/map/tile_parser.hpp b/src/mbgl/map/tile_parser.hpp index 7eadc45d46..88e5687804 100644 --- a/src/mbgl/map/tile_parser.hpp +++ b/src/mbgl/map/tile_parser.hpp @@ -6,7 +6,6 @@ #include <mbgl/style/filter_expression.hpp> #include <mbgl/style/class_properties.hpp> #include <mbgl/style/style_bucket.hpp> -#include <mbgl/style/style_layer.hpp> #include <mbgl/text/glyph.hpp> #include <mbgl/util/ptr.hpp> #include <mbgl/util/noncopyable.hpp> @@ -23,6 +22,7 @@ class GlyphAtlas; class GlyphStore; class SpriteAtlas; class Sprite; +class Style; class StyleBucket; class StyleLayoutFill; class StyleLayoutRaster; @@ -34,7 +34,7 @@ class TileParser : private util::noncopyable { public: TileParser(const GeometryTile& geometryTile, VectorTileData& tile, - const std::vector<util::ptr<StyleLayer>>& layers, + const Style& style, GlyphAtlas& glyphAtlas, GlyphStore& glyphStore, SpriteAtlas& spriteAtlas, @@ -61,9 +61,8 @@ private: const GeometryTile& geometryTile; VectorTileData& tile; - std::vector<util::ptr<StyleLayer>> layers; - // Cross-thread shared data. + const Style& style; GlyphAtlas& glyphAtlas; GlyphStore& glyphStore; SpriteAtlas& spriteAtlas; diff --git a/src/mbgl/map/vector_tile_data.cpp b/src/mbgl/map/vector_tile_data.cpp index 017d3ecb7c..6dc6e8e9b3 100644 --- a/src/mbgl/map/vector_tile_data.cpp +++ b/src/mbgl/map/vector_tile_data.cpp @@ -9,12 +9,12 @@ #include <mbgl/util/pbf.hpp> #include <mbgl/util/worker.hpp> #include <mbgl/util/work_request.hpp> +#include <mbgl/style/style.hpp> using namespace mbgl; VectorTileData::VectorTileData(const TileID& id_, - const std::vector<util::ptr<StyleLayer>>& layers_, - Worker& workers_, + Style& style_, GlyphAtlas& glyphAtlas_, GlyphStore& glyphStore_, SpriteAtlas& spriteAtlas_, @@ -23,12 +23,11 @@ VectorTileData::VectorTileData(const TileID& id_, float angle, bool collisionDebug) : TileData(id_, source_), - layers(layers_), - workers(workers_), glyphAtlas(glyphAtlas_), glyphStore(glyphStore_), spriteAtlas(spriteAtlas_), sprite(sprite_), + style(style_), collision(std::make_unique<CollisionTile>(id_.z, 4096, source_.tile_size * id.overscaling, angle, collisionDebug)), lastAngle(angle), currentAngle(angle) { @@ -52,7 +51,7 @@ void VectorTileData::parse() { // is going to be discarded afterwards. VectorTile vectorTile(pbf((const uint8_t *)data.data(), data.size())); const VectorTile* vt = &vectorTile; - TileParser parser(*vt, *this, layers, glyphAtlas, glyphStore, spriteAtlas, sprite); + TileParser parser(*vt, *this, style, glyphAtlas, glyphStore, spriteAtlas, sprite); parser.parse(); if (getState() == State::obsolete) { @@ -129,14 +128,15 @@ void VectorTileData::redoPlacement(float angle, bool collisionDebug) { currentCollisionDebug = collisionDebug; auto callback = std::bind(&VectorTileData::endRedoPlacement, this); - workRequest = workers.send([this, angle, collisionDebug] { workerRedoPlacement(angle, collisionDebug); }, callback); + workRequest = style.workers.send([this, angle, collisionDebug] { workerRedoPlacement(angle, collisionDebug); }, callback); + } } void VectorTileData::workerRedoPlacement(float angle, bool collisionDebug) { collision->reset(angle, 0); collision->setDebug(collisionDebug); - for (const auto& layer_desc : layers) { + for (const auto& layer_desc : style.layers) { auto bucket = getBucket(*layer_desc); if (bucket) { bucket->placeFeatures(); @@ -145,7 +145,7 @@ void VectorTileData::workerRedoPlacement(float angle, bool collisionDebug) { } void VectorTileData::endRedoPlacement() { - for (const auto& layer_desc : layers) { + for (const auto& layer_desc : style.layers) { auto bucket = getBucket(*layer_desc); if (bucket) { bucket->swapRenderData(); diff --git a/src/mbgl/map/vector_tile_data.hpp b/src/mbgl/map/vector_tile_data.hpp index 51a627d7b7..5a6f448c69 100644 --- a/src/mbgl/map/vector_tile_data.hpp +++ b/src/mbgl/map/vector_tile_data.hpp @@ -26,14 +26,14 @@ class GlyphAtlas; class GlyphStore; class SpriteAtlas; class Sprite; +class Style; class VectorTileData : public TileData { friend class TileParser; public: VectorTileData(const TileID&, - const std::vector<util::ptr<StyleLayer>>&, - Worker&, + Style&, GlyphAtlas&, GlyphStore&, SpriteAtlas&, @@ -66,12 +66,11 @@ protected: TriangleElementsBuffer triangleElementsBuffer; LineElementsBuffer lineElementsBuffer; - std::vector<util::ptr<StyleLayer>> layers; - Worker& workers; GlyphAtlas& glyphAtlas; GlyphStore& glyphStore; SpriteAtlas& spriteAtlas; util::ptr<Sprite> sprite; + Style& style; private: // Contains all the Bucket objects for the tile. Buckets are render |