[core] Source::setVolatile enables Resource::StoragePolicy::Volatile for tiles

This commit is contained in:
Mikhail Pozdnyakov
2020-04-21 18:27:58 +03:00
parent 11efffb351
commit dc7b1dd34f
4 changed files with 7 additions and 3 deletions

View File

@@ -93,6 +93,7 @@ void TilePyramid::update(const std::vector<Immutable<style::LayerProperties>>& l
const optional<uint8_t>& sourcePrefetchZoomDelta = sourceImpl.getPrefetchZoomDelta();
const optional<uint8_t>& maxParentTileOverscaleFactor = sourceImpl.getMaxOverscaleFactorForParentTiles();
const Duration minimumUpdateInterval = sourceImpl.getMinimumTileUpdateInterval();
const bool isVolatile = sourceImpl.isVolatile();
std::vector<OverscaledTileID> idealTiles;
std::vector<OverscaledTileID> panTiles;
@@ -132,7 +133,7 @@ void TilePyramid::update(const std::vector<Immutable<style::LayerProperties>>& l
auto retainTileFn = [&](Tile& tile, TileNecessity necessity) -> void {
if (retain.emplace(tile.id).second) {
tile.setUpdateParameters({minimumUpdateInterval});
tile.setUpdateParameters({minimumUpdateInterval, isVolatile});
tile.setNecessity(necessity);
}

View File

@@ -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) {

View File

@@ -49,7 +49,7 @@ private:
Resource resource;
std::shared_ptr<FileSource> fileSource;
std::unique_ptr<AsyncRequest> request;
TileUpdateParameters updateParameters{{Duration::zero()}};
TileUpdateParameters updateParameters{Duration::zero(), false};
};
} // namespace mbgl

View File

@@ -160,6 +160,8 @@ void TileLoader<T>::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); });
}