summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2016-05-25 20:10:57 +0200
committerKonstantin Käfer <mail@kkaefer.com>2016-05-25 21:51:25 +0200
commitc91e4ee1f4c9e7150090a8c40a49966a2e169c26 (patch)
tree50c3e34f67a433e4807081492feae86bf718e070 /src
parentc52a0c65f473a82d9aed05f402bc4e82fcd24fb9 (diff)
downloadqtlocation-mapboxgl-c91e4ee1f4c9e7150090a8c40a49966a2e169c26.tar.gz
[core] normalize TileData::State::obsolete handling
Diffstat (limited to 'src')
-rw-r--r--src/mbgl/tile/raster_tile_data.cpp6
-rw-r--r--src/mbgl/tile/vector_tile_data.cpp11
2 files changed, 5 insertions, 12 deletions
diff --git a/src/mbgl/tile/raster_tile_data.cpp b/src/mbgl/tile/raster_tile_data.cpp
index b47c3fed24..aab166807f 100644
--- a/src/mbgl/tile/raster_tile_data.cpp
+++ b/src/mbgl/tile/raster_tile_data.cpp
@@ -47,7 +47,7 @@ RasterTileData::RasterTileData(const OverscaledTileID& id_,
bucket = std::move(result.get<std::unique_ptr<Bucket>>());
} else {
error = result.get<std::exception_ptr>();
- state = State::obsolete;
+ state = State::parsed;
bucket.reset();
}
@@ -66,9 +66,7 @@ Bucket* RasterTileData::getBucket(StyleLayer const&) {
}
void RasterTileData::cancel() {
- if (state != State::obsolete) {
- state = State::obsolete;
- }
+ state = State::obsolete;
req = nullptr;
workRequest.reset();
}
diff --git a/src/mbgl/tile/vector_tile_data.cpp b/src/mbgl/tile/vector_tile_data.cpp
index 29aac5af30..afca67e78e 100644
--- a/src/mbgl/tile/vector_tile_data.cpp
+++ b/src/mbgl/tile/vector_tile_data.cpp
@@ -62,9 +62,6 @@ VectorTileData::VectorTileData(const OverscaledTileID& id_,
workRequest.reset();
workRequest = worker.parseGeometryTile(tileWorker, style.getLayers(), std::move(tile), targetConfig, [callback, this, config = targetConfig] (TileParseResult result) {
workRequest.reset();
- if (state == State::obsolete) {
- return;
- }
std::exception_ptr error;
if (result.is<TileParseResultData>()) {
@@ -85,8 +82,9 @@ VectorTileData::VectorTileData(const OverscaledTileID& id_,
}
} else {
+ // This is triggered when parsing fails (e.g. due to an invalid vector tile)
error = result.get<std::exception_ptr>();
- state = State::obsolete;
+ state = State::parsed;
}
callback(error);
@@ -107,9 +105,6 @@ bool VectorTileData::parsePending(std::function<void(std::exception_ptr)> callba
workRequest.reset();
workRequest = worker.parsePendingGeometryTileLayers(tileWorker, targetConfig, [this, callback, config = targetConfig] (TileParseResult result) {
workRequest.reset();
- if (state == State::obsolete) {
- return;
- }
std::exception_ptr error;
if (result.is<TileParseResultData>()) {
@@ -133,7 +128,7 @@ bool VectorTileData::parsePending(std::function<void(std::exception_ptr)> callba
} else {
error = result.get<std::exception_ptr>();
- state = State::obsolete;
+ state = State::parsed;
}
callback(error);