From dc7b1dd34fcea40e07d1a2831efee20132fbb4ab Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Tue, 21 Apr 2020 18:27:58 +0300 Subject: [core] Source::setVolatile enables Resource::StoragePolicy::Volatile for tiles --- src/mbgl/renderer/tile_pyramid.cpp | 3 ++- src/mbgl/tile/tile.hpp | 3 ++- src/mbgl/tile/tile_loader.hpp | 2 +- src/mbgl/tile/tile_loader_impl.hpp | 2 ++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp index 9d1c8a89b8..bd22dd81cc 100644 --- a/src/mbgl/renderer/tile_pyramid.cpp +++ b/src/mbgl/renderer/tile_pyramid.cpp @@ -93,6 +93,7 @@ void TilePyramid::update(const std::vector>& l const optional& sourcePrefetchZoomDelta = sourceImpl.getPrefetchZoomDelta(); const optional& maxParentTileOverscaleFactor = sourceImpl.getMaxOverscaleFactorForParentTiles(); const Duration minimumUpdateInterval = sourceImpl.getMinimumTileUpdateInterval(); + const bool isVolatile = sourceImpl.isVolatile(); std::vector idealTiles; std::vector panTiles; @@ -132,7 +133,7 @@ void TilePyramid::update(const std::vector>& l auto retainTileFn = [&](Tile& tile, TileNecessity necessity) -> void { if (retain.emplace(tile.id).second) { - tile.setUpdateParameters({minimumUpdateInterval}); + tile.setUpdateParameters({minimumUpdateInterval, isVolatile}); tile.setNecessity(necessity); } diff --git a/src/mbgl/tile/tile.hpp b/src/mbgl/tile/tile.hpp index 3bb8d87d6c..573b3a1c50 100644 --- a/src/mbgl/tile/tile.hpp +++ b/src/mbgl/tile/tile.hpp @@ -36,10 +36,11 @@ class UploadPass; struct TileUpdateParameters { Duration minimumUpdateInterval; + bool isVolatile; }; inline bool operator==(const TileUpdateParameters& a, const TileUpdateParameters& b) { - return a.minimumUpdateInterval == b.minimumUpdateInterval; + return a.minimumUpdateInterval == b.minimumUpdateInterval && a.isVolatile == b.isVolatile; } inline bool operator!=(const TileUpdateParameters& a, const TileUpdateParameters& b) { diff --git a/src/mbgl/tile/tile_loader.hpp b/src/mbgl/tile/tile_loader.hpp index e4b9a1dc5e..99d9047f8d 100644 --- a/src/mbgl/tile/tile_loader.hpp +++ b/src/mbgl/tile/tile_loader.hpp @@ -49,7 +49,7 @@ private: Resource resource; std::shared_ptr fileSource; std::unique_ptr request; - TileUpdateParameters updateParameters{{Duration::zero()}}; + TileUpdateParameters updateParameters{Duration::zero(), false}; }; } // namespace mbgl diff --git a/src/mbgl/tile/tile_loader_impl.hpp b/src/mbgl/tile/tile_loader_impl.hpp index cf37650484..a034ea7401 100644 --- a/src/mbgl/tile/tile_loader_impl.hpp +++ b/src/mbgl/tile/tile_loader_impl.hpp @@ -160,6 +160,8 @@ void TileLoader::loadFromNetwork() { // NetworkOnly request. resource.loadingMethod = Resource::LoadingMethod::NetworkOnly; resource.minimumUpdateInterval = updateParameters.minimumUpdateInterval; + resource.storagePolicy = + updateParameters.isVolatile ? Resource::StoragePolicy::Volatile : Resource::StoragePolicy::Permanent; request = fileSource->request(resource, [this](const Response& res) { loadedData(res); }); } -- cgit v1.2.1