diff --git a/src/mbgl/map/resource_loader.cpp b/src/mbgl/map/resource_loader.cpp index 0f5c33abd..46b7af9a2 100644 --- a/src/mbgl/map/resource_loader.cpp +++ b/src/mbgl/map/resource_loader.cpp @@ -85,11 +85,15 @@ void ResourceLoader::update(MapData& data, for (const auto& source : style_->sources) { source->update(data, transform, *style_, glyphAtlas, *glyphStore_, - spriteAtlas, sprite_, texturePool); + spriteAtlas, sprite_, texturePool, shouldReparsePartialTiles_); } + + shouldReparsePartialTiles_ = false; } void ResourceLoader::onGlyphRangeLoaded() { + shouldReparsePartialTiles_ = true; + emitTileDataChanged(); } @@ -102,6 +106,8 @@ void ResourceLoader::onTileLoaded() { } void ResourceLoader::onSpriteLoaded() { + shouldReparsePartialTiles_ = true; + emitTileDataChanged(); } diff --git a/src/mbgl/map/resource_loader.hpp b/src/mbgl/map/resource_loader.hpp index 6f63fe226..cf73db5fa 100644 --- a/src/mbgl/map/resource_loader.hpp +++ b/src/mbgl/map/resource_loader.hpp @@ -73,6 +73,8 @@ public: private: void emitTileDataChanged(); + bool shouldReparsePartialTiles_ = false; + std::string accessToken_; util::ptr sprite_; diff --git a/src/mbgl/map/source.cpp b/src/mbgl/map/source.cpp index 686b15c24..501dde5c2 100644 --- a/src/mbgl/map/source.cpp +++ b/src/mbgl/map/source.cpp @@ -384,7 +384,8 @@ void Source::update(MapData& data, GlyphStore& glyphStore, SpriteAtlas& spriteAtlas, util::ptr sprite, - TexturePool& texturePool) { + TexturePool& texturePool, + bool shouldReparsePartialTiles) { if (!loaded || data.getAnimationTime() <= updated) { return; } @@ -407,7 +408,8 @@ void Source::update(MapData& data, switch (state) { case TileData::State::partial: - handlePartialTile(id, style.workers); + if (shouldReparsePartialTiles) + handlePartialTile(id, style.workers); break; case TileData::State::invalid: state = addTile(data, transformState, style, glyphAtlas, glyphStore, diff --git a/src/mbgl/map/source.hpp b/src/mbgl/map/source.hpp index 15cc8a817..d5f4f8b5d 100644 --- a/src/mbgl/map/source.hpp +++ b/src/mbgl/map/source.hpp @@ -75,7 +75,8 @@ public: GlyphStore&, SpriteAtlas&, util::ptr, - TexturePool&); + TexturePool&, + bool shouldReparsePartialTiles); void invalidateTiles(const std::vector&);