summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/image_manager.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/image_manager.hpp')
-rw-r--r--src/mbgl/renderer/image_manager.hpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/mbgl/renderer/image_manager.hpp b/src/mbgl/renderer/image_manager.hpp
index 5ed6e237f0..9097418681 100644
--- a/src/mbgl/renderer/image_manager.hpp
+++ b/src/mbgl/renderer/image_manager.hpp
@@ -58,7 +58,13 @@ private:
bool loaded = false;
std::map<ImageRequestor*, ImageRequestPair> requestors;
- std::map<ImageRequestor*, ImageRequestPair> missingImageRequestors;
+ using Callback = std::function<void()>;
+ using ActorCallback = Actor<Callback>;
+ struct MissingImageRequestPair {
+ ImageRequestPair pair;
+ std::map<std::string, std::unique_ptr<ActorCallback>> callbacks;
+ };
+ std::map<ImageRequestor*, MissingImageRequestPair> missingImageRequestors;
std::map<std::string, std::set<ImageRequestor*>> requestedImages;
std::size_t requestedImagesCacheSize = 0ul;
ImageMap images;
@@ -71,17 +77,8 @@ public:
explicit ImageRequestor(ImageManager&);
virtual ~ImageRequestor();
virtual void onImagesAvailable(ImageMap icons, ImageMap patterns, ImageVersionMap versionMap, uint64_t imageCorrelationID) = 0;
-
- void addPendingRequest(const std::string& imageId) { pendingRequests.insert(imageId); }
- bool hasPendingRequest(const std::string& imageId) const { return pendingRequests.count(imageId); }
- bool hasPendingRequests() const { return !pendingRequests.empty(); }
- void removePendingRequest(const std::string& imageId) { pendingRequests.erase(imageId); }
-
private:
ImageManager& imageManager;
-
- // Pending requests are image requests that are waiting to be dispatched to the client.
- std::set<std::string> pendingRequests;
};
} // namespace mbgl