From 5cdf838a387cae446dba500ac49a1c5524bf7949 Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Fri, 31 Mar 2017 14:53:18 -0700 Subject: [core] De-mutex GlyphAtlas and SpriteAtlas - Expose glyph and icon information to workers via message interface. - Glyph/SpriteAtlas track which tiles have outstanding requests and send messages to them when glyphs/icons become available. - Remove obsolete "updateSymbolDependentTiles" pathway - Symbol preparation for a tile now depends on all glyphs becoming available before it can start. - Start tracking individual icons needed for a tile, although we don't do anything with the information yet. - Introduce typedef for GlyphID --- src/mbgl/tile/geometry_tile.hpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/mbgl/tile/geometry_tile.hpp') diff --git a/src/mbgl/tile/geometry_tile.hpp b/src/mbgl/tile/geometry_tile.hpp index cabe193467..f057e21507 100644 --- a/src/mbgl/tile/geometry_tile.hpp +++ b/src/mbgl/tile/geometry_tile.hpp @@ -1,7 +1,9 @@ #pragma once +#include #include #include +#include #include #include #include @@ -24,7 +26,7 @@ class UpdateParameters; class SourceQueryOptions; } // namespace style -class GeometryTile : public Tile { +class GeometryTile : public Tile, public GlyphRequestor, IconRequestor { public: GeometryTile(const OverscaledTileID&, std::string sourceID, @@ -36,8 +38,13 @@ public: void setData(std::unique_ptr); void setPlacementConfig(const PlacementConfig&) override; - void symbolDependenciesChanged() override; void redoLayout() override; + + void onGlyphsAvailable(GlyphPositionMap, GlyphRangeSet) override; + void onIconsAvailable(SpriteAtlas*, IconMap) override; + + void getGlyphs(GlyphDependencies); + void getIcons(IconDependencyMap); Bucket* getBucket(const style::Layer&) override; @@ -87,6 +94,10 @@ private: std::shared_ptr mailbox; Actor worker; + GlyphAtlas& glyphAtlas; + std::set pendingSpriteAtlases; + IconAtlasMap iconAtlasMap; + uint64_t correlationID = 0; optional requestedConfig; -- cgit v1.2.1