summaryrefslogtreecommitdiff
path: root/src/mbgl/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/util')
-rw-r--r--src/mbgl/util/worker.cpp20
-rw-r--r--src/mbgl/util/worker.hpp2
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: