diff options
Diffstat (limited to 'src/mbgl/map/raster_tile_data.cpp')
-rw-r--r-- | src/mbgl/map/raster_tile_data.cpp | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/src/mbgl/map/raster_tile_data.cpp b/src/mbgl/map/raster_tile_data.cpp deleted file mode 100644 index f9f5480197..0000000000 --- a/src/mbgl/map/raster_tile_data.cpp +++ /dev/null @@ -1,88 +0,0 @@ -#include <mbgl/map/raster_tile_data.hpp> -#include <mbgl/map/source.hpp> -#include <mbgl/storage/resource.hpp> -#include <mbgl/storage/response.hpp> -#include <mbgl/storage/file_source.hpp> -#include <mbgl/util/worker.hpp> -#include <mbgl/util/work_request.hpp> - -using namespace mbgl; - -RasterTileData::RasterTileData(const TileID& id_, - float pixelRatio, - const std::string& urlTemplate, - TexturePool &texturePool_, - Worker& worker_, - const std::function<void(std::exception_ptr)>& callback) - : TileData(id_), - texturePool(texturePool_), - worker(worker_) { - state = State::loading; - - const Resource resource = Resource::tile(urlTemplate, pixelRatio, id.x, id.y, id.sourceZ); - req = util::ThreadContext::getFileSource()->request(resource, [callback, this](Response res) { - if (res.error) { - std::exception_ptr error; - if (res.error->reason == Response::Error::Reason::NotFound) { - // This is a 404 response. We're treating these as empty tiles. - workRequest.reset(); - state = State::parsed; - bucket.reset(); - } else { - // This is a different error, e.g. a connection or server error. - error = std::make_exception_ptr(std::runtime_error(res.error->message)); - } - callback(error); - return; - } - - modified = res.modified; - expires = res.expires; - - if (res.notModified) { - // We got the same data again. Abort early. - return; - } - - if (state == State::loading) { - // Only overwrite the state when we didn't have a previous tile. - state = State::loaded; - } - - workRequest.reset(); - workRequest = worker.parseRasterTile(std::make_unique<RasterBucket>(texturePool), res.data, [this, callback] (RasterTileParseResult result) { - workRequest.reset(); - if (state != State::loaded) { - return; - } - - std::exception_ptr error; - if (result.is<std::unique_ptr<Bucket>>()) { - state = State::parsed; - bucket = std::move(result.get<std::unique_ptr<Bucket>>()); - } else { - error = result.get<std::exception_ptr>(); - state = State::obsolete; - bucket.reset(); - } - - callback(error); - }); - }); -} - -RasterTileData::~RasterTileData() { - cancel(); -} - -Bucket* RasterTileData::getBucket(StyleLayer const&) { - return bucket.get(); -} - -void RasterTileData::cancel() { - if (state != State::obsolete) { - state = State::obsolete; - } - req = nullptr; - workRequest.reset(); -} |