diff options
Diffstat (limited to 'src/mbgl/tile/raster_tile_data.cpp')
-rw-r--r-- | src/mbgl/tile/raster_tile_data.cpp | 72 |
1 files changed, 35 insertions, 37 deletions
diff --git a/src/mbgl/tile/raster_tile_data.cpp b/src/mbgl/tile/raster_tile_data.cpp index 1a5b78d7ff..5e1948101b 100644 --- a/src/mbgl/tile/raster_tile_data.cpp +++ b/src/mbgl/tile/raster_tile_data.cpp @@ -1,6 +1,5 @@ #include <mbgl/tile/raster_tile_data.hpp> #include <mbgl/style/source.hpp> -#include <mbgl/tile/raster_tile_source.hpp> #include <mbgl/storage/resource.hpp> #include <mbgl/storage/response.hpp> #include <mbgl/storage/file_source.hpp> @@ -10,51 +9,51 @@ using namespace mbgl; RasterTileData::RasterTileData(const OverscaledTileID& id_, - std::unique_ptr<RasterTileSource> tileSource_, gl::TexturePool& texturePool_, Worker& worker_, - const std::function<void(std::exception_ptr)>& callback) - : TileData(id_, std::move(tileSource_)), + const std::function<void(std::exception_ptr)>& callback_) + : TileData(id_), texturePool(texturePool_), - worker(worker_) { - auto rasterTileSource = reinterpret_cast<RasterTileSource*>(tileSource.get()); - tileRequest = rasterTileSource->monitorTile([callback, this](std::exception_ptr err, - std::shared_ptr<const std::string> data, - optional<Timestamp> modified_, - optional<Timestamp> expires_) { - if (err) { - callback(err); - return; - } + worker(worker_), + callback(callback_) { +} - modified = modified_; - expires = expires_; +void RasterTileData::setData(std::exception_ptr err, + std::shared_ptr<const std::string> data, + optional<Timestamp> modified_, + optional<Timestamp> expires_) { + if (err) { + callback(err); + return; + } - if (!data) { - // This is a 404 response. We're treating these as empty tiles. - workRequest.reset(); - availableData = DataAvailability::All; - bucket.reset(); - callback(err); - return; - } + modified = modified_; + expires = expires_; + if (!data) { + // This is a 404 response. We're treating these as empty tiles. workRequest.reset(); - workRequest = worker.parseRasterTile(std::make_unique<RasterBucket>(texturePool), data, [this, callback] (RasterTileParseResult result) { - workRequest.reset(); + availableData = DataAvailability::All; + bucket.reset(); + callback(err); + return; + } - std::exception_ptr error; - if (result.is<std::unique_ptr<Bucket>>()) { - bucket = std::move(result.get<std::unique_ptr<Bucket>>()); - } else { - error = result.get<std::exception_ptr>(); - bucket.reset(); - } + workRequest.reset(); + workRequest = worker.parseRasterTile(std::make_unique<RasterBucket>(texturePool), data, [this] (RasterTileParseResult result) { + workRequest.reset(); + + std::exception_ptr error; + if (result.is<std::unique_ptr<Bucket>>()) { + bucket = std::move(result.get<std::unique_ptr<Bucket>>()); + } else { + error = result.get<std::exception_ptr>(); + bucket.reset(); + } - availableData = DataAvailability::All; + availableData = DataAvailability::All; - callback(error); - }); + callback(error); }); } @@ -67,6 +66,5 @@ Bucket* RasterTileData::getBucket(const style::Layer&) { } void RasterTileData::cancel() { - tileRequest.reset(); workRequest.reset(); } |