summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-10-04 13:48:59 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2016-10-05 10:26:04 -0700
commit31be5d3c3a51976ed5db51fc7b59fd994b09b611 (patch)
treea82eea517c3debf873ab5ca4a3bf3fce889f6f34 /src
parent3b72c288adbb9aa689047fbb277b98ab7be6ec75 (diff)
downloadqtlocation-mapboxgl-31be5d3c3a51976ed5db51fc7b59fd994b09b611.tar.gz
[core] Tiles that error on load are not renderable
Diffstat (limited to 'src')
-rw-r--r--src/mbgl/tile/geometry_tile.cpp6
-rw-r--r--src/mbgl/tile/geometry_tile.hpp5
-rw-r--r--src/mbgl/tile/geometry_tile_worker.cpp8
-rw-r--r--src/mbgl/tile/raster_tile.cpp8
-rw-r--r--src/mbgl/tile/raster_tile.hpp4
-rw-r--r--src/mbgl/tile/raster_tile_worker.cpp2
6 files changed, 22 insertions, 11 deletions
diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp
index ef40ea8e70..1f64b6b6c6 100644
--- a/src/mbgl/tile/geometry_tile.cpp
+++ b/src/mbgl/tile/geometry_tile.cpp
@@ -41,7 +41,6 @@ void GeometryTile::cancel() {
}
void GeometryTile::setError(std::exception_ptr err) {
- availableData = DataAvailability::All;
observer->onTileError(*this, err);
}
@@ -113,6 +112,11 @@ void GeometryTile::onPlacement(PlacementResult result) {
observer->onTileChanged(*this);
}
+void GeometryTile::onError(std::exception_ptr err) {
+ availableData = DataAvailability::All;
+ observer->onTileError(*this, err);
+}
+
Bucket* GeometryTile::getBucket(const Layer& layer) {
const auto it = buckets.find(layer.baseImpl->bucketName());
if (it == buckets.end()) {
diff --git a/src/mbgl/tile/geometry_tile.hpp b/src/mbgl/tile/geometry_tile.hpp
index a644992376..bcc71480af 100644
--- a/src/mbgl/tile/geometry_tile.hpp
+++ b/src/mbgl/tile/geometry_tile.hpp
@@ -31,8 +31,9 @@ public:
~GeometryTile() override;
- void setError(std::exception_ptr err);
+ void setError(std::exception_ptr);
void setData(std::unique_ptr<const GeometryTileData>);
+
void setPlacementConfig(const PlacementConfig&) override;
void redoLayout() override;
@@ -64,6 +65,8 @@ public:
};
void onPlacement(PlacementResult);
+ void onError(std::exception_ptr);
+
private:
const std::string sourceID;
style::Style& style;
diff --git a/src/mbgl/tile/geometry_tile_worker.cpp b/src/mbgl/tile/geometry_tile_worker.cpp
index 6d26d85093..b6f166be56 100644
--- a/src/mbgl/tile/geometry_tile_worker.cpp
+++ b/src/mbgl/tile/geometry_tile_worker.cpp
@@ -88,7 +88,7 @@ void GeometryTileWorker::setData(std::unique_ptr<const GeometryTileData> data_,
break;
}
} catch (...) {
- parent.invoke(&GeometryTile::setError, std::current_exception());
+ parent.invoke(&GeometryTile::onError, std::current_exception());
}
}
@@ -112,7 +112,7 @@ void GeometryTileWorker::setLayers(std::vector<std::unique_ptr<Layer>> layers_,
break;
}
} catch (...) {
- parent.invoke(&GeometryTile::setError, std::current_exception());
+ parent.invoke(&GeometryTile::onError, std::current_exception());
}
}
@@ -136,7 +136,7 @@ void GeometryTileWorker::setPlacementConfig(PlacementConfig placementConfig_, ui
break;
}
} catch (...) {
- parent.invoke(&GeometryTile::setError, std::current_exception());
+ parent.invoke(&GeometryTile::onError, std::current_exception());
}
}
@@ -162,7 +162,7 @@ void GeometryTileWorker::coalesced() {
break;
}
} catch (...) {
- parent.invoke(&GeometryTile::setError, std::current_exception());
+ parent.invoke(&GeometryTile::onError, std::current_exception());
}
}
diff --git a/src/mbgl/tile/raster_tile.cpp b/src/mbgl/tile/raster_tile.cpp
index 303212da80..c7a051f841 100644
--- a/src/mbgl/tile/raster_tile.cpp
+++ b/src/mbgl/tile/raster_tile.cpp
@@ -28,8 +28,6 @@ void RasterTile::cancel() {
}
void RasterTile::setError(std::exception_ptr err) {
- bucket.reset();
- availableData = DataAvailability::All;
observer->onTileError(*this, err);
}
@@ -47,6 +45,12 @@ void RasterTile::onParsed(std::unique_ptr<Bucket> result) {
observer->onTileChanged(*this);
}
+void RasterTile::onError(std::exception_ptr err) {
+ bucket.reset();
+ availableData = DataAvailability::All;
+ observer->onTileError(*this, err);
+}
+
Bucket* RasterTile::getBucket(const style::Layer&) {
return bucket.get();
}
diff --git a/src/mbgl/tile/raster_tile.hpp b/src/mbgl/tile/raster_tile.hpp
index 2b2e84d463..1f6ceef0db 100644
--- a/src/mbgl/tile/raster_tile.hpp
+++ b/src/mbgl/tile/raster_tile.hpp
@@ -23,8 +23,7 @@ public:
void setNecessity(Necessity) final;
- void setError(std::exception_ptr err);
-
+ void setError(std::exception_ptr);
void setData(std::shared_ptr<const std::string> data,
optional<Timestamp> modified_,
optional<Timestamp> expires_);
@@ -33,6 +32,7 @@ public:
Bucket* getBucket(const style::Layer&) override;
void onParsed(std::unique_ptr<Bucket> result);
+ void onError(std::exception_ptr);
private:
TileLoader<RasterTile> loader;
diff --git a/src/mbgl/tile/raster_tile_worker.cpp b/src/mbgl/tile/raster_tile_worker.cpp
index d7621e35b8..443ee10400 100644
--- a/src/mbgl/tile/raster_tile_worker.cpp
+++ b/src/mbgl/tile/raster_tile_worker.cpp
@@ -19,7 +19,7 @@ void RasterTileWorker::parse(std::shared_ptr<const std::string> data) {
auto bucket = std::make_unique<RasterBucket>(decodeImage(*data));
parent.invoke(&RasterTile::onParsed, std::move(bucket));
} catch (...) {
- parent.invoke(&RasterTile::setError, std::current_exception());
+ parent.invoke(&RasterTile::onError, std::current_exception());
}
}