diff --git a/src/mbgl/map/resource_loader.cpp b/src/mbgl/map/resource_loader.cpp index 46b7af9a2..7b5ebd19d 100644 --- a/src/mbgl/map/resource_loader.cpp +++ b/src/mbgl/map/resource_loader.cpp @@ -101,7 +101,11 @@ void ResourceLoader::onSourceLoaded() { emitTileDataChanged(); } -void ResourceLoader::onTileLoaded() { +void ResourceLoader::onTileLoaded(bool isNewTile) { + if (isNewTile) { + shouldReparsePartialTiles_ = true; + } + emitTileDataChanged(); } diff --git a/src/mbgl/map/resource_loader.hpp b/src/mbgl/map/resource_loader.hpp index cf73db5fa..379444135 100644 --- a/src/mbgl/map/resource_loader.hpp +++ b/src/mbgl/map/resource_loader.hpp @@ -65,7 +65,7 @@ public: // Source::Observer implementation. void onSourceLoaded() override; - void onTileLoaded() override; + void onTileLoaded(bool isNewTile) override; // Sprite::Observer implementation. void onSpriteLoaded() override; diff --git a/src/mbgl/map/source.cpp b/src/mbgl/map/source.cpp index 501dde5c2..e40cb0f16 100644 --- a/src/mbgl/map/source.cpp +++ b/src/mbgl/map/source.cpp @@ -232,7 +232,7 @@ void Source::handlePartialTile(const TileID& id, Worker& worker) { return; } - auto callback = std::bind(&Source::emitTileLoaded, this); + auto callback = std::bind(&Source::emitTileLoaded, this, false); data->reparse(worker, callback); } @@ -273,7 +273,7 @@ TileData::State Source::addTile(MapData& data, new_tile.data = cache.get(normalized_id.to_uint64()); } - auto callback = std::bind(&Source::emitTileLoaded, this); + auto callback = std::bind(&Source::emitTileLoaded, this, true); if (!new_tile.data) { // If we don't find working tile data, we're just going to load it. if (info.type == SourceType::Vector) { @@ -520,9 +520,9 @@ void Source::emitSourceLoaded() { } } -void Source::emitTileLoaded() { +void Source::emitTileLoaded(bool isNewTile) { if (observer_) { - observer_->onTileLoaded(); + observer_->onTileLoaded(isNewTile); } } diff --git a/src/mbgl/map/source.hpp b/src/mbgl/map/source.hpp index d5f4f8b5d..fcb1b4183 100644 --- a/src/mbgl/map/source.hpp +++ b/src/mbgl/map/source.hpp @@ -58,7 +58,7 @@ public: virtual ~Observer() = default; virtual void onSourceLoaded() = 0; - virtual void onTileLoaded() = 0; + virtual void onTileLoaded(bool isNewTile) = 0; }; Source(); @@ -97,7 +97,7 @@ public: private: void emitSourceLoaded(); - void emitTileLoaded(); + void emitTileLoaded(bool isNewTile); void handlePartialTile(const TileID &id, Worker &worker); bool findLoadedChildren(const TileID& id, int32_t maxCoveringZoom, std::forward_list& retain);