summaryrefslogtreecommitdiff
path: root/src/mbgl/map/sprite.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/map/sprite.cpp')
-rw-r--r--src/mbgl/map/sprite.cpp20
1 files changed, 7 insertions, 13 deletions
diff --git a/src/mbgl/map/sprite.cpp b/src/mbgl/map/sprite.cpp
index a54d96f005..cbd8c44338 100644
--- a/src/mbgl/map/sprite.cpp
+++ b/src/mbgl/map/sprite.cpp
@@ -20,10 +20,8 @@
namespace mbgl {
struct Sprite::Loader {
- bool loadedJSON = false;
- bool loadedImage = false;
- std::unique_ptr<Data> data = std::make_unique<Data>();
-
+ std::shared_ptr<const std::string> image;
+ std::shared_ptr<const std::string> json;
RequestHolder jsonRequest;
RequestHolder spriteRequest;
};
@@ -50,8 +48,7 @@ Sprite::Sprite(const std::string& baseUrl, float pixelRatio_)
}
loader->jsonRequest = nullptr;
if (res.status == Response::Successful) {
- loader->data->json = res.data;
- loader->loadedJSON = true;
+ loader->json = res.data;
} else {
std::stringstream message;
message << "Failed to load [" << jsonURL << "]: " << res.message;
@@ -70,8 +67,7 @@ Sprite::Sprite(const std::string& baseUrl, float pixelRatio_)
}
loader->spriteRequest = nullptr;
if (res.status == Response::Successful) {
- loader->data->image = res.data;
- loader->loadedImage = true;
+ loader->image = res.data;
} else {
std::stringstream message;
message << "Failed to load [" << spriteURL << "]: " << res.message;
@@ -88,14 +84,12 @@ Sprite::~Sprite() {
void Sprite::emitSpriteLoadedIfComplete() {
assert(loader);
- if (!loader->loadedImage || !loader->loadedJSON || !observer) {
+ if (!loader->image || !loader->json || !observer) {
return;
}
- std::unique_ptr<Data> data(std::move(loader->data));
- loader.reset();
-
- auto result = parseSprite(data->image, data->json);
+ auto local = std::move(loader);
+ auto result = parseSprite(*local->image, *local->json);
if (result.is<Sprites>()) {
loaded = true;
observer->onSpriteLoaded(result.get<Sprites>());