diff options
Diffstat (limited to 'src/mbgl/util')
-rw-r--r-- | src/mbgl/util/worker.cpp | 20 | ||||
-rw-r--r-- | src/mbgl/util/worker.hpp | 2 |
2 files changed, 8 insertions, 14 deletions
diff --git a/src/mbgl/util/worker.cpp b/src/mbgl/util/worker.cpp index d23831b440..49d1c2bc5b 100644 --- a/src/mbgl/util/worker.cpp +++ b/src/mbgl/util/worker.cpp @@ -18,18 +18,12 @@ public: void parseRasterTile(std::unique_ptr<RasterBucket> bucket, const std::shared_ptr<const std::string> data, std::function<void(RasterTileParseResult)> callback) { - PremultipliedImage image; - try { - image = decodeImage(*data); + bucket->setImage(decodeImage(*data)); + callback(RasterTileParseResult(std::move(bucket))); } catch (...) { - callback(RasterTileParseResult("error parsing raster image")); - return; + callback(std::current_exception()); } - - bucket->setImage(std::move(image)); - - callback(RasterTileParseResult(std::move(bucket))); } void parseGeometryTile(TileWorker* worker, @@ -39,8 +33,8 @@ public: std::function<void(TileParseResult)> callback) { try { callback(worker->parseAllLayers(std::move(layers), *tile, config)); - } catch (const std::exception& ex) { - callback(TileParseResult(ex.what())); + } catch (...) { + callback(std::current_exception()); } } @@ -48,8 +42,8 @@ public: std::function<void(TileParseResult)> callback) { try { callback(worker->parsePendingLayers()); - } catch (const std::exception& ex) { - callback(TileParseResult(ex.what())); + } catch (...) { + callback(std::current_exception()); } } diff --git a/src/mbgl/util/worker.hpp b/src/mbgl/util/worker.hpp index 5ba477491d..d4660d9e7c 100644 --- a/src/mbgl/util/worker.hpp +++ b/src/mbgl/util/worker.hpp @@ -16,7 +16,7 @@ class GeometryTileLoader; using RasterTileParseResult = mapbox::util::variant< std::unique_ptr<Bucket>, // success - std::string>; // error + std::exception_ptr>; // error class Worker : public mbgl::util::noncopyable { public: |