[core] Invalidate cached tiles of disabled sources on relayout

This commit is contained in:
John Firebaugh
2017-04-05 12:31:26 -07:00
parent 0e72fc4ec3
commit 5e53d0586f
3 changed files with 8 additions and 4 deletions

View File

@@ -51,6 +51,9 @@ public:
// Removes all tiles (by putting them into the cache).
void removeTiles();
// Remove all tiles and clear the cache.
void invalidateTiles();
// Request that all loaded tiles re-run the layout operation on the existing source
// data with fresh style information.
void reloadTiles();
@@ -92,15 +95,14 @@ public:
void detach();
protected:
void invalidateTiles();
void removeStaleTiles(const std::set<OverscaledTileID>&);
Source& base;
SourceObserver* observer = nullptr;
std::map<OverscaledTileID, std::unique_ptr<Tile>> tiles;
TileCache cache;
private:
void removeStaleTiles(const std::set<OverscaledTileID>&);
// TileObserver implementation.
void onTileChanged(Tile&) override;
void onTileError(Tile&, std::exception_ptr) override;

View File

@@ -279,6 +279,8 @@ void Style::relayout() {
Source* source = getSource(sourceID);
if (source && source->baseImpl->enabled) {
source->baseImpl->reloadTiles();
} else if (source) {
source->baseImpl->invalidateTiles();
}
}
updateBatch.sourceIDs.clear();