diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2017-07-27 15:48:52 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2017-07-27 15:48:52 +0200 |
commit | 9af44b75120ad079ec7a15498b6213c5baae52da (patch) | |
tree | 5a65cc04f4540d8f1eed246791c60b9f01a2e7ca | |
parent | df24499fb1cdd400a2fc83f3bc571b2147a880da (diff) | |
download | qtlocation-mapboxgl-9af44b75120ad079ec7a15498b6213c5baae52da.tar.gz |
[core] make GeometryTile constructor + setData/setError protected
-rw-r--r-- | cmake/core-files.cmake | 1 | ||||
-rw-r--r-- | src/mbgl/annotation/annotation_tile.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/annotation/annotation_tile.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/tile/geojson_tile.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/tile/geometry_tile.hpp | 3 | ||||
-rw-r--r-- | src/mbgl/tile/raster_tile.cpp | 9 | ||||
-rw-r--r-- | src/mbgl/tile/raster_tile.hpp | 5 | ||||
-rw-r--r-- | src/mbgl/tile/tile_loader_impl.hpp | 10 | ||||
-rw-r--r-- | src/mbgl/tile/vector_tile.cpp | 9 | ||||
-rw-r--r-- | src/mbgl/tile/vector_tile.hpp | 5 |
10 files changed, 38 insertions, 12 deletions
diff --git a/cmake/core-files.cmake b/cmake/core-files.cmake index b812753563..0b4a0b6556 100644 --- a/cmake/core-files.cmake +++ b/cmake/core-files.cmake @@ -311,6 +311,7 @@ set(MBGL_CORE_FILES include/mbgl/storage/offline.hpp include/mbgl/storage/online_file_source.hpp include/mbgl/storage/resource.hpp + include/mbgl/storage/resource_error.hpp include/mbgl/storage/resource_kind.hpp include/mbgl/storage/resource_status.hpp include/mbgl/storage/resource_transform.hpp diff --git a/src/mbgl/annotation/annotation_tile.cpp b/src/mbgl/annotation/annotation_tile.cpp index 0596d60f4f..f2520b75c3 100644 --- a/src/mbgl/annotation/annotation_tile.cpp +++ b/src/mbgl/annotation/annotation_tile.cpp @@ -22,6 +22,10 @@ AnnotationTile::~AnnotationTile() { void AnnotationTile::setNecessity(Necessity) { } +void AnnotationTile::setData(std::unique_ptr<const GeometryTileData> data_) { + GeometryTile::setData(std::move(data_)); +} + class AnnotationTileFeatureData { public: AnnotationTileFeatureData(const AnnotationID id_, diff --git a/src/mbgl/annotation/annotation_tile.hpp b/src/mbgl/annotation/annotation_tile.hpp index 88505c50e3..d464961590 100644 --- a/src/mbgl/annotation/annotation_tile.hpp +++ b/src/mbgl/annotation/annotation_tile.hpp @@ -16,6 +16,8 @@ public: void setNecessity(Necessity) final; + void setData(std::unique_ptr<const GeometryTileData>); + private: AnnotationManager& annotationManager; }; diff --git a/src/mbgl/tile/geojson_tile.cpp b/src/mbgl/tile/geojson_tile.cpp index d5e2e14e54..6b0cd8f947 100644 --- a/src/mbgl/tile/geojson_tile.cpp +++ b/src/mbgl/tile/geojson_tile.cpp @@ -106,7 +106,7 @@ GeoJSONTile::GeoJSONTile(const OverscaledTileID& overscaledTileID, } void GeoJSONTile::updateData(mapbox::geometry::feature_collection<int16_t> features) { - setData(std::make_unique<GeoJSONTileData>(std::move(features))); + GeometryTile::setData(std::make_unique<GeoJSONTileData>(std::move(features))); } void GeoJSONTile::setNecessity(Necessity) {} diff --git a/src/mbgl/tile/geometry_tile.hpp b/src/mbgl/tile/geometry_tile.hpp index 7088637a30..b9c05f7ad2 100644 --- a/src/mbgl/tile/geometry_tile.hpp +++ b/src/mbgl/tile/geometry_tile.hpp @@ -27,7 +27,7 @@ class GlyphAtlas; class ImageAtlas; class GeometryTile : public Tile, public GlyphRequestor, ImageRequestor { -public: +protected: GeometryTile(const OverscaledTileID&, std::string sourceID, const TileParameters&); @@ -37,6 +37,7 @@ public: void setError(std::exception_ptr); void setData(std::unique_ptr<const GeometryTileData>); +public: void setPlacementConfig(const PlacementConfig&) override; void setLayers(const std::vector<Immutable<style::Layer::Impl>>&) override; diff --git a/src/mbgl/tile/raster_tile.cpp b/src/mbgl/tile/raster_tile.cpp index 629ab9cc1f..5906b0f6a0 100644 --- a/src/mbgl/tile/raster_tile.cpp +++ b/src/mbgl/tile/raster_tile.cpp @@ -28,7 +28,8 @@ void RasterTile::cancel() { } // Called instead of setData() when the data source returns an error while loading this tile. -void RasterTile::setError(std::exception_ptr err) { +void RasterTile::setError(std::exception_ptr err, const bool complete) { + (void)complete; loaded = true; renderable = false; observer->onTileError(*this, err); @@ -37,8 +38,10 @@ void RasterTile::setError(std::exception_ptr err) { // Called when new data is available for this tile. It can be called even if there is already data // in this tile. void RasterTile::setData(std::shared_ptr<const std::string> data, - optional<Timestamp> modified_, - optional<Timestamp> expires_) { + const optional<Timestamp> modified_, + const optional<Timestamp> expires_, + const bool complete) { + (void)complete; modified = modified_; expires = expires_; diff --git a/src/mbgl/tile/raster_tile.hpp b/src/mbgl/tile/raster_tile.hpp index 9363ab02b3..b92637b711 100644 --- a/src/mbgl/tile/raster_tile.hpp +++ b/src/mbgl/tile/raster_tile.hpp @@ -24,10 +24,11 @@ public: void setNecessity(Necessity) final; - void setError(std::exception_ptr); + void setError(std::exception_ptr, bool complete); void setData(std::shared_ptr<const std::string> data, optional<Timestamp> modified_, - optional<Timestamp> expires_); + optional<Timestamp> expires_, + bool complete); void cancel() override; diff --git a/src/mbgl/tile/tile_loader_impl.hpp b/src/mbgl/tile/tile_loader_impl.hpp index 65df200088..5bf9988485 100644 --- a/src/mbgl/tile/tile_loader_impl.hpp +++ b/src/mbgl/tile/tile_loader_impl.hpp @@ -2,6 +2,7 @@ #include <mbgl/tile/tile_loader.hpp> #include <mbgl/storage/file_source.hpp> +#include <mbgl/storage/resource_error.hpp> #include <mbgl/renderer/tile_parameters.hpp> #include <mbgl/util/tileset.hpp> @@ -89,8 +90,11 @@ void TileLoader<T>::makeOptional() { template <typename T> void TileLoader<T>::loadedData(const Response& res) { - if (res.error && res.error->status != ResourceStatus::NotFoundError) { - tile.setError(std::make_exception_ptr(std::runtime_error(res.error->message))); + const bool complete = necessity == Necessity::Optional || resource.necessity == Necessity::Required; + if (res.error) { + tile.setError(std::make_exception_ptr(util::ResourceError(res.error->message, resource.kind, + res.error->status, resource.url)), + complete); } else if (res.notModified) { resource.priorExpires = res.expires; // Do not notify the tile; when we get this message, it already has the current @@ -99,7 +103,7 @@ void TileLoader<T>::loadedData(const Response& res) { resource.priorModified = res.modified; resource.priorExpires = res.expires; resource.priorEtag = res.etag; - tile.setData(res.noContent ? nullptr : res.data, res.modified, res.expires); + tile.setData(res.noContent ? nullptr : res.data, res.modified, res.expires, complete); } } diff --git a/src/mbgl/tile/vector_tile.cpp b/src/mbgl/tile/vector_tile.cpp index e2e700b7b7..f03f836851 100644 --- a/src/mbgl/tile/vector_tile.cpp +++ b/src/mbgl/tile/vector_tile.cpp @@ -16,9 +16,16 @@ void VectorTile::setNecessity(Necessity necessity) { loader.setNecessity(necessity); } +void VectorTile::setError(std::exception_ptr err, const bool complete) { + (void)complete; + GeometryTile::setError(err); +} + void VectorTile::setData(std::shared_ptr<const std::string> data_, optional<Timestamp> modified_, - optional<Timestamp> expires_) { + optional<Timestamp> expires_, + const bool complete) { + (void)complete; modified = modified_; expires = expires_; diff --git a/src/mbgl/tile/vector_tile.hpp b/src/mbgl/tile/vector_tile.hpp index 566cde4f37..c34fa4d763 100644 --- a/src/mbgl/tile/vector_tile.hpp +++ b/src/mbgl/tile/vector_tile.hpp @@ -16,9 +16,12 @@ public: const Tileset&); void setNecessity(Necessity) final; + + void setError(std::exception_ptr, bool complete); void setData(std::shared_ptr<const std::string> data, optional<Timestamp> modified, - optional<Timestamp> expires); + optional<Timestamp> expires, + bool complete); private: TileLoader<VectorTile> loader; |