summaryrefslogtreecommitdiff
path: root/src/mbgl/tile/raster_tile_data.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/tile/raster_tile_data.cpp')
-rw-r--r--src/mbgl/tile/raster_tile_data.cpp72
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();
}