summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Loer <chris.loer@gmail.com>2018-09-18 15:06:40 -0700
committerKonstantin Käfer <mail@kkaefer.com>2018-09-26 20:43:24 +0200
commit368ee1bdfb315b1ec47a7123618a9074f6865b7b (patch)
treed427171e14a9e844c203cdd2d12c722abc3ea002
parent4e16e2b17961075cd698ee5380941d5593a74e1a (diff)
downloadqtlocation-mapboxgl-upstream/nitpick-format.tar.gz
[core, offline] Limit offline downloads to use half of maximum concurrent file requests.upstream/nitpick-format
Fixes issue #12655: don't let offline downloads starve interactive tile downloads.
-rw-r--r--platform/default/mbgl/storage/offline_download.cpp5
-rw-r--r--platform/default/mbgl/storage/offline_download.hpp2
-rw-r--r--test/storage/offline_download.test.cpp2
3 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..db2ea7122f 100644
--- a/platform/default/mbgl/storage/offline_download.cpp
+++ b/platform/default/mbgl/storage/offline_download.cpp
@@ -88,7 +88,8 @@ OfflineDownload::OfflineDownload(int64_t id_,
: id(id_),
definition(definition_),
offlineDatabase(offlineDatabase_),
- onlineFileSource(onlineFileSource_) {
+ onlineFileSource(onlineFileSource_),
+ maximumConcurrentRequests(std::max<uint32_t>(HTTPFileSource::maximumConcurrentRequests() / 2, 1)) {
setObserver(nullptr);
}
@@ -340,7 +341,7 @@ void OfflineDownload::continueDownload() {
return;
}
- while (!resourcesRemaining.empty() && requests.size() < HTTPFileSource::maximumConcurrentRequests()) {
+ while (!resourcesRemaining.empty() && requests.size() < maximumConcurrentRequests) {
ensureResource(resourcesRemaining.front());
resourcesRemaining.pop_front();
}
diff --git a/platform/default/mbgl/storage/offline_download.hpp b/platform/default/mbgl/storage/offline_download.hpp
index cffac1665b..eec48dd985 100644
--- a/platform/default/mbgl/storage/offline_download.hpp
+++ b/platform/default/mbgl/storage/offline_download.hpp
@@ -63,6 +63,8 @@ private:
void queueResource(Resource);
void queueTiles(style::SourceType, uint16_t tileSize, const Tileset&);
+
+ uint32_t maximumConcurrentRequests;
};
} // namespace mbgl
diff --git a/test/storage/offline_download.test.cpp b/test/storage/offline_download.test.cpp
index 5fc0e752df..677cb3acfc 100644
--- a/test/storage/offline_download.test.cpp
+++ b/test/storage/offline_download.test.cpp
@@ -297,7 +297,7 @@ TEST(OfflineDownload, DoesNotFloodTheFileSourceWithRequests) {
fileSource.respond(Resource::Kind::Style, test.response("style.json"));
test.loop.runOnce();
- EXPECT_EQ(HTTPFileSource::maximumConcurrentRequests(), fileSource.requests.size());
+ EXPECT_EQ(std::max<uint32_t>(HTTPFileSource::maximumConcurrentRequests() / 2, 1), fileSource.requests.size());
}
TEST(OfflineDownload, GetStatusNoResources) {