diff options
author | Chris Loer <chris.loer@gmail.com> | 2017-03-10 09:02:07 -0800 |
---|---|---|
committer | Chris Loer <chris.loer@gmail.com> | 2017-03-22 08:50:45 -0700 |
commit | e90966a9373d7aa7908b4a6fe39fa6cf5230cbc0 (patch) | |
tree | f75298824f64a157f6a6d69433bc653822c0a8e8 /src/mbgl/tile/geometry_tile.cpp | |
parent | 3c91b6b7de487993e75de552ba44249740644e42 (diff) | |
download | qtlocation-mapboxgl-upstream/cloer_glyph_sanity_check.tar.gz |
[core] De-mutex GlyphAtlas.upstream/cloer_glyph_sanity_check
- Expose glyph information to workers via message interface.
- Symbol preparation for a tile now depends on all glyphs becoming
available before it can start.
Diffstat (limited to 'src/mbgl/tile/geometry_tile.cpp')
-rw-r--r-- | src/mbgl/tile/geometry_tile.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp index 5f1fc5de66..602c43148a 100644 --- a/src/mbgl/tile/geometry_tile.cpp +++ b/src/mbgl/tile/geometry_tile.cpp @@ -32,12 +32,13 @@ GeometryTile::GeometryTile(const OverscaledTileID& id_, worker(parameters.workerScheduler, ActorRef<GeometryTile>(*this, mailbox), id_, - *parameters.style.glyphAtlas, obsolete, - parameters.mode) { + parameters.mode), + glyphAtlas(*parameters.style.glyphAtlas) { } GeometryTile::~GeometryTile() { + glyphAtlas.removeGlyphs(*this); cancel(); } @@ -130,6 +131,14 @@ void GeometryTile::onError(std::exception_ptr err) { availableData = DataAvailability::All; observer->onTileError(*this, err); } + +void GeometryTile::onGlyphsAvailable(GlyphPositionMap glyphPositions) { + worker.invoke(&GeometryTileWorker::onGlyphsAvailable, std::move(glyphPositions)); +} + +void GeometryTile::getGlyphs(GlyphDependencies glyphDependencies) { + glyphAtlas.getGlyphs(*this, std::move(glyphDependencies)); +} Bucket* GeometryTile::getBucket(const Layer& layer) { const auto& buckets = layer.is<SymbolLayer>() ? symbolBuckets : nonSymbolBuckets; |