diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2015-10-29 11:55:56 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2015-10-30 11:17:00 -0700 |
commit | f6f5d9608d29a27b67e3b6702740c443deba06ac (patch) | |
tree | 872fab289553ba0762d9a9f8d24a616b1e63b72b /src | |
parent | ee6d415bf2bd8b3ab72f9178635392d3abaa779e (diff) | |
download | qtlocation-mapboxgl-f6f5d9608d29a27b67e3b6702740c443deba06ac.tar.gz |
[core] Separate type for RasterTileParseResult
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/map/raster_tile_data.cpp | 12 | ||||
-rw-r--r-- | src/mbgl/util/worker.cpp | 14 | ||||
-rw-r--r-- | src/mbgl/util/worker.hpp | 6 |
3 files changed, 14 insertions, 18 deletions
diff --git a/src/mbgl/map/raster_tile_data.cpp b/src/mbgl/map/raster_tile_data.cpp index 16f727bac7..2427e9f55d 100644 --- a/src/mbgl/map/raster_tile_data.cpp +++ b/src/mbgl/map/raster_tile_data.cpp @@ -57,19 +57,15 @@ void RasterTileData::request(float pixelRatio, state = State::loaded; } - workRequest = worker.parseRasterTile(std::make_unique<RasterBucket>(texturePool, layout), res.data, [this, callback] (TileParseResult result) { + workRequest = worker.parseRasterTile(std::make_unique<RasterBucket>(texturePool, layout), res.data, [this, callback] (RasterTileParseResult result) { workRequest.reset(); if (state != State::loaded) { return; } - if (result.is<TileParseResultBuckets>()) { - auto& buckets = result.get<TileParseResultBuckets>(); - state = buckets.state; - // TODO: Make this less awkward; we're only getting one bucket back. - if (!buckets.buckets.empty()) { - bucket = std::move(buckets.buckets.front().second); - } + if (result.is<std::unique_ptr<Bucket>>()) { + state = State::parsed; + bucket = std::move(result.get<std::unique_ptr<Bucket>>()); } else { std::stringstream message; message << "Failed to parse [" << std::string(id) << "]: " << result.get<std::string>(); diff --git a/src/mbgl/util/worker.cpp b/src/mbgl/util/worker.cpp index 6d43367091..b0005eda6f 100644 --- a/src/mbgl/util/worker.cpp +++ b/src/mbgl/util/worker.cpp @@ -16,21 +16,17 @@ public: void parseRasterTile(std::unique_ptr<RasterBucket> bucket, const std::shared_ptr<const std::string> data, - std::function<void(TileParseResult)> callback) { + std::function<void(RasterTileParseResult)> callback) { std::unique_ptr<util::Image> image(new util::Image(*data)); if (!(*image)) { - callback(TileParseResult("error parsing raster image")); + callback(RasterTileParseResult("error parsing raster image")); } if (!bucket->setImage(std::move(image))) { - callback(TileParseResult("error setting raster image to bucket")); + callback(RasterTileParseResult("error setting raster image to bucket")); } - TileParseResultBuckets result; - result.buckets.emplace_back("raster", std::move(bucket)); - result.state = TileData::State::parsed; - - callback(std::move(result)); + callback(RasterTileParseResult(std::move(bucket))); } void parseGeometryTile(TileWorker* worker, @@ -74,7 +70,7 @@ Worker::~Worker() = default; std::unique_ptr<WorkRequest> Worker::parseRasterTile(std::unique_ptr<RasterBucket> bucket, const std::shared_ptr<const std::string> data, - std::function<void(TileParseResult)> callback) { + std::function<void(RasterTileParseResult)> callback) { current = (current + 1) % threads.size(); return threads[current]->invokeWithCallback(&Worker::Impl::parseRasterTile, callback, bucket, data); diff --git a/src/mbgl/util/worker.hpp b/src/mbgl/util/worker.hpp index 6bf16216d4..e7bd3daada 100644 --- a/src/mbgl/util/worker.hpp +++ b/src/mbgl/util/worker.hpp @@ -14,6 +14,10 @@ class WorkRequest; class RasterBucket; class GeometryTileLoader; +using RasterTileParseResult = mapbox::util::variant< + std::unique_ptr<Bucket>, // success + std::string>; // error + class Worker : public mbgl::util::noncopyable { public: explicit Worker(std::size_t count); @@ -33,7 +37,7 @@ public: Request parseRasterTile(std::unique_ptr<RasterBucket> bucket, std::shared_ptr<const std::string> data, - std::function<void(TileParseResult)> callback); + std::function<void(RasterTileParseResult)> callback); Request parseGeometryTile(TileWorker&, std::unique_ptr<GeometryTile>, |