summaryrefslogtreecommitdiff
path: root/src/mbgl/map/sprite.hpp
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2015-05-05 10:18:36 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2015-05-05 10:18:36 -0700
commit6260dbe043d9e836f4d5955f1a72e7965b7a7b29 (patch)
tree5dba188571ac0b4dc26f9b017470b3f71e19a695 /src/mbgl/map/sprite.hpp
parent81e6c2c6c3ece471e03456a49d3bb6dc1d5a7284 (diff)
parent19881f8b24c94ef66cc3ee72eebc73eeb37af2af (diff)
downloadqtlocation-mapboxgl-6260dbe043d9e836f4d5955f1a72e7965b7a7b29.tar.gz
Merge pull request #1326 from mapbox/925-remove_promisesios-v0.2.20
Remove promises from the parsing pipeline
Diffstat (limited to 'src/mbgl/map/sprite.hpp')
-rw-r--r--src/mbgl/map/sprite.hpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/mbgl/map/sprite.hpp b/src/mbgl/map/sprite.hpp
index bd6ae89bc6..ccf2561618 100644
--- a/src/mbgl/map/sprite.hpp
+++ b/src/mbgl/map/sprite.hpp
@@ -11,7 +11,6 @@
#include <iosfwd>
#include <string>
#include <unordered_map>
-#include <future>
namespace mbgl {
@@ -35,23 +34,31 @@ public:
class Sprite : private util::noncopyable {
public:
- Sprite(const std::string& baseUrl, float pixelRatio, Environment&, std::function<void()> callback);
+ class Observer {
+ public:
+ virtual ~Observer() = default;
+
+ virtual void onSpriteLoaded() = 0;
+ };
+
+ Sprite(const std::string& baseUrl, float pixelRatio);
~Sprite();
const SpritePosition &getSpritePosition(const std::string& name) const;
bool hasPixelRatio(float ratio) const;
- void waitUntilLoaded() const;
bool isLoaded() const;
const float pixelRatio;
std::unique_ptr<util::Image> raster;
+ void setObserver(Observer* observer);
private:
+ void emitSpriteLoadedIfComplete();
+
void parseJSON();
void parseImage();
- void complete();
std::string body;
std::string image;
@@ -60,13 +67,10 @@ private:
std::unordered_map<std::string, SpritePosition> pos;
const SpritePosition empty;
- std::promise<void> promise;
- std::future<void> future;
- std::function<void ()> callback;
-
Environment& env;
Request* jsonRequest = nullptr;
Request* spriteRequest = nullptr;
+ Observer* observer = nullptr;
};
}