From 5e53d0586fe97db1d49b4b63313c96efb7bf71f8 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Wed, 5 Apr 2017 12:31:26 -0700 Subject: [core] Invalidate cached tiles of disabled sources on relayout --- src/mbgl/style/source_impl.hpp | 8 +++++--- src/mbgl/style/style.cpp | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'src/mbgl/style') diff --git a/src/mbgl/style/source_impl.hpp b/src/mbgl/style/source_impl.hpp index e8ba54b2b6..b4473cbc84 100644 --- a/src/mbgl/style/source_impl.hpp +++ b/src/mbgl/style/source_impl.hpp @@ -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&); - Source& base; SourceObserver* observer = nullptr; std::map> tiles; TileCache cache; private: + void removeStaleTiles(const std::set&); + // TileObserver implementation. void onTileChanged(Tile&) override; void onTileError(Tile&, std::exception_ptr) override; diff --git a/src/mbgl/style/style.cpp b/src/mbgl/style/style.cpp index 9640988402..4c3ea207f5 100644 --- a/src/mbgl/style/style.cpp +++ b/src/mbgl/style/style.cpp @@ -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(); -- cgit v1.2.1