diff options
author | Huyen Chau Nguyen <hello@chau-nguyen.de> | 2018-10-17 20:12:28 +0200 |
---|---|---|
committer | Huyen Chau Nguyen <hello@chau-nguyen.de> | 2018-10-23 12:47:10 +0200 |
commit | 1e3a744d2296feb2fd6b5d7da324bb31b6ee17c6 (patch) | |
tree | 1d3f1975ba993fc4b03caf649190d501eb9e5d41 /platform/default | |
parent | 9afe75aa76c02db21209e8f92b09be4b596a3983 (diff) | |
download | qtlocation-mapboxgl-1e3a744d2296feb2fd6b5d7da324bb31b6ee17c6.tar.gz |
[core] add priorities to resources
- priorities can be low or regular
- offline downloads should have low priority to not throttle "regular requests"
Diffstat (limited to 'platform/default')
-rw-r--r-- | platform/default/mbgl/storage/offline_download.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/platform/default/mbgl/storage/offline_download.cpp b/platform/default/mbgl/storage/offline_download.cpp index 17af0abf3c..6524697546 100644 --- a/platform/default/mbgl/storage/offline_download.cpp +++ b/platform/default/mbgl/storage/offline_download.cpp @@ -219,7 +219,7 @@ void OfflineDownload::activateDownload() { status = OfflineRegionStatus(); status.downloadState = OfflineRegionDownloadState::Active; status.requiredResourceCount++; - ensureResource(Resource::style(definition.match([](auto& reg){ return reg.styleURL; })), + ensureResource(Resource::style(definition.match([](auto& reg){ return reg.styleURL; }), Resource::Priority::Low), [&](Response styleResponse) { status.requiredResourceCountIsPrecise = true; @@ -238,7 +238,7 @@ void OfflineDownload::activateDownload() { status.requiredResourceCount++; requiredSourceURLs.insert(url); - ensureResource(Resource::source(url), [=](Response sourceResponse) { + ensureResource(Resource::source(url, Resource::Priority::Low), [=](Response sourceResponse) { style::conversion::Error error; optional<Tileset> tileset = style::conversion::convertJSON<Tileset>(*sourceResponse.data, error); if (tileset) { @@ -353,6 +353,7 @@ void OfflineDownload::deactivateDownload() { } void OfflineDownload::queueResource(Resource resource) { + resource.setPriority(Resource::Priority::Low); status.requiredResourceCount++; resourcesRemaining.push_front(std::move(resource)); } @@ -362,12 +363,14 @@ void OfflineDownload::queueTiles(SourceType type, uint16_t tileSize, const Tiles status.requiredResourceCount++; resourcesRemaining.push_back(Resource::tile( tileset.tiles[0], definition.match([](auto& def) { return def.pixelRatio; }), tile.x, - tile.y, tile.z, tileset.scheme)); + tile.y, tile.z, tileset.scheme, Resource::Priority::Low)); }); } void OfflineDownload::ensureResource(const Resource& resource, std::function<void(Response)> callback) { + assert(resource.priority == Resource::Priority::Low); + auto workRequestsIt = requests.insert(requests.begin(), nullptr); *workRequestsIt = util::RunLoop::Get()->invokeCancellable([=]() { requests.erase(workRequestsIt); |