summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrent Whitman <brent@pathym.com>2016-04-26 13:40:46 -0700
committerMinh Nguyễn <mxn@1ec5.org>2016-04-27 13:41:29 -0700
commita706a2a48d6ca2076c9c81a0cb0c088ae50d1496 (patch)
tree07076716389c63588d9d11ef418a0d13b79d7ea2
parent6ea257fa6adb0855f49623f1b4d1a241635f2457 (diff)
downloadqtlocation-mapboxgl-a706a2a48d6ca2076c9c81a0cb0c088ae50d1496.tar.gz
[ios, osx] Add a property for bytes used by offline tiles
-rw-r--r--include/mbgl/storage/offline.hpp7
-rw-r--r--platform/darwin/src/MGLOfflinePack.h6
-rw-r--r--platform/darwin/src/MGLOfflinePack.mm1
-rw-r--r--platform/default/mbgl/storage/offline_database.cpp29
-rw-r--r--platform/default/mbgl/storage/offline_download.cpp10
5 files changed, 38 insertions, 15 deletions
diff --git a/include/mbgl/storage/offline.hpp b/include/mbgl/storage/offline.hpp
index a3153adc28..2c6ca05eec 100644
--- a/include/mbgl/storage/offline.hpp
+++ b/include/mbgl/storage/offline.hpp
@@ -93,9 +93,14 @@ public:
uint64_t completedResourceCount = 0;
/**
- * The cumulative size, in bytes, of all resources that have been fully downloaded.
+ * The cumulative size, in bytes, of all resources (inclusive of tiles) that have been fully downloaded.
*/
uint64_t completedResourceSize = 0;
+
+ /**
+ * The cumulative size, in bytes, of all tiles that have been fully downloaded.
+ */
+ uint64_t completedTileSize = 0;
/**
* The number of resources that are known to be required for this region. See the
diff --git a/platform/darwin/src/MGLOfflinePack.h b/platform/darwin/src/MGLOfflinePack.h
index 083e050ddd..0584abe225 100644
--- a/platform/darwin/src/MGLOfflinePack.h
+++ b/platform/darwin/src/MGLOfflinePack.h
@@ -60,10 +60,14 @@ typedef struct MGLOfflinePackProgress {
*/
uint64_t countOfResourcesCompleted;
/**
- The cumulative size of the downloaded resources on disk, measured in bytes.
+ The cumulative size of the downloaded resources (inclusive of tiles) on disk, measured in bytes.
*/
uint64_t countOfBytesCompleted;
/**
+ The cumulative size of the downloaded tiles on disk, measured in bytes.
+ */
+ uint64_t countOfTileBytesCompleted;
+ /**
The minimum number of resources that must be downloaded in order to view
the pack’s full region without any omissions.
diff --git a/platform/darwin/src/MGLOfflinePack.mm b/platform/darwin/src/MGLOfflinePack.mm
index 9c8396f728..72806929ee 100644
--- a/platform/darwin/src/MGLOfflinePack.mm
+++ b/platform/darwin/src/MGLOfflinePack.mm
@@ -153,6 +153,7 @@ private:
MGLOfflinePackProgress progress;
progress.countOfResourcesCompleted = status.completedResourceCount;
progress.countOfBytesCompleted = status.completedResourceSize;
+ progress.countOfTileBytesCompleted = status.completedTileSize;
progress.countOfResourcesExpected = status.requiredResourceCount;
progress.maximumResourcesExpected = status.requiredResourceCountIsPrecise ? status.requiredResourceCount : UINT64_MAX;
self.progress = progress;
diff --git a/platform/default/mbgl/storage/offline_database.cpp b/platform/default/mbgl/storage/offline_database.cpp
index 6476834c1b..9bd731df74 100644
--- a/platform/default/mbgl/storage/offline_database.cpp
+++ b/platform/default/mbgl/storage/offline_database.cpp
@@ -608,24 +608,29 @@ OfflineRegionDefinition OfflineDatabase::getRegionDefinition(int64_t regionID) {
OfflineRegionStatus OfflineDatabase::getRegionCompletedStatus(int64_t regionID) {
OfflineRegionStatus result;
- Statement stmt = getStatement(
+ Statement stmtRes = getStatement(
"SELECT COUNT(*), SUM(size) FROM ( "
" SELECT LENGTH(data) as size "
" FROM region_resources, resources "
" WHERE region_id = ?1 "
" AND resource_id = resources.id "
- " UNION ALL "
- " SELECT LENGTH(data) as size "
- " FROM region_tiles, tiles "
- " WHERE region_id = ?1 "
- " AND tile_id = tiles.id "
") ");
-
- stmt->bind(1, regionID);
- stmt->run();
-
- result.completedResourceCount = stmt->get<int64_t>(0);
- result.completedResourceSize = stmt->get<int64_t>(1);
+ stmtRes->bind(1, regionID);
+ stmtRes->run();
+
+ Statement stmtTile = getStatement(
+ "SELECT COUNT(*), SUM(size) FROM ( "
+ " SELECT LENGTH(data) as size "
+ " FROM region_tiles, tiles "
+ " WHERE region_id = ?1 "
+ " AND tile_id = tiles.id "
+ ") ");
+ stmtTile->bind(1, regionID);
+ stmtTile->run();
+
+ result.completedTileSize = stmtTile->get<int64_t>(1);
+ result.completedResourceCount = stmtTile->get<int64_t>(0) + stmtRes->get<int64_t>(0);
+ result.completedResourceSize = result.completedTileSize + stmtRes->get<int64_t>(1);
return result;
}
diff --git a/platform/default/mbgl/storage/offline_download.cpp b/platform/default/mbgl/storage/offline_download.cpp
index e3fd10503d..d694235149 100644
--- a/platform/default/mbgl/storage/offline_download.cpp
+++ b/platform/default/mbgl/storage/offline_download.cpp
@@ -220,6 +220,10 @@ void OfflineDownload::ensureResource(const Resource& resource, std::function<voi
status.completedResourceCount++;
status.completedResourceSize += offlineResponse->second;
+ if (resource.kind == Resource::Kind::Tile) {
+ status.completedTileSize += offlineResponse->second;
+ }
+
observer->statusChanged(status);
if (status.complete()) {
@@ -247,7 +251,11 @@ void OfflineDownload::ensureResource(const Resource& resource, std::function<voi
}
status.completedResourceCount++;
- status.completedResourceSize += offlineDatabase.putRegionResource(id, resource, onlineResponse);
+ uint64_t resourceSize = offlineDatabase.putRegionResource(id, resource, onlineResponse);
+ status.completedResourceSize += resourceSize;
+ if (resource.kind == Resource::Kind::Tile) {
+ status.completedTileSize += resourceSize;
+ }
observer->statusChanged(status);