#include #include #include #include #include #include #include #include #include #include using namespace mbgl; LiveTileData::LiveTileData(const TileID& id_, const LiveTile* tile, Style& style_, const SourceInfo& source_, std::function callback) : TileData(id_), worker(style_.workers), tileWorker(id_, source_.source_id, source_.max_zoom, style_, style_.layers, state, std::make_unique(0, 0, false)) { state = State::loaded; if (!tile) { state = State::parsed; return; } workRequest = worker.parseLiveTile(tileWorker, *tile, [this, callback] (TileParseResult result) { if (result.is()) { state = result.get(); } else { error = result.get(); state = State::obsolete; } callback(); }); } LiveTileData::~LiveTileData() { cancel(); } Bucket* LiveTileData::getBucket(const StyleLayer& layer) { if (!isReady() || !layer.bucket) { return nullptr; } return tileWorker.getBucket(layer); } void LiveTileData::cancel() { state = State::obsolete; workRequest.reset(); }