diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-10-04 13:48:59 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-10-05 10:26:04 -0700 |
commit | 31be5d3c3a51976ed5db51fc7b59fd994b09b611 (patch) | |
tree | a82eea517c3debf873ab5ca4a3bf3fce889f6f34 /src | |
parent | 3b72c288adbb9aa689047fbb277b98ab7be6ec75 (diff) | |
download | qtlocation-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.cpp | 6 | ||||
-rw-r--r-- | src/mbgl/tile/geometry_tile.hpp | 5 | ||||
-rw-r--r-- | src/mbgl/tile/geometry_tile_worker.cpp | 8 | ||||
-rw-r--r-- | src/mbgl/tile/raster_tile.cpp | 8 | ||||
-rw-r--r-- | src/mbgl/tile/raster_tile.hpp | 4 | ||||
-rw-r--r-- | src/mbgl/tile/raster_tile_worker.cpp | 2 |
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()); } } |