summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mbgl/renderer/image_manager.cpp7
-rw-r--r--src/mbgl/renderer/image_manager.hpp15
-rw-r--r--src/mbgl/tile/geometry_tile.cpp2
-rw-r--r--src/mbgl/tile/geometry_tile.hpp2
4 files changed, 19 insertions, 7 deletions
diff --git a/src/mbgl/renderer/image_manager.cpp b/src/mbgl/renderer/image_manager.cpp
index f373167493..8e584ffd34 100644
--- a/src/mbgl/renderer/image_manager.cpp
+++ b/src/mbgl/renderer/image_manager.cpp
@@ -288,4 +288,11 @@ gfx::TextureBinding ImageManager::textureBinding(gfx::Context& context) {
return { atlasTexture->getResource(), gfx::TextureFilterType::Linear };
}
+ImageRequestor::ImageRequestor(ImageManager& imageManager_) : imageManager(imageManager_) {
+}
+
+ImageRequestor::~ImageRequestor() {
+ imageManager.removeRequestor(*this);
+}
+
} // namespace mbgl
diff --git a/src/mbgl/renderer/image_manager.hpp b/src/mbgl/renderer/image_manager.hpp
index f52808b614..61f3f3c276 100644
--- a/src/mbgl/renderer/image_manager.hpp
+++ b/src/mbgl/renderer/image_manager.hpp
@@ -19,11 +19,7 @@ namespace gfx {
class Context;
} // namespace gfx
-class ImageRequestor {
-public:
- virtual ~ImageRequestor() = default;
- virtual void onImagesAvailable(ImageMap icons, ImageMap patterns, ImageVersionMap versionMap, uint64_t imageCorrelationID) = 0;
-};
+class ImageRequestor;
/*
ImageManager does two things:
@@ -105,4 +101,13 @@ private:
bool dirty = true;
};
+class ImageRequestor {
+public:
+ explicit ImageRequestor(ImageManager&);
+ virtual ~ImageRequestor();
+ virtual void onImagesAvailable(ImageMap icons, ImageMap patterns, ImageVersionMap versionMap, uint64_t imageCorrelationID) = 0;
+private:
+ ImageManager& imageManager;
+};
+
} // namespace mbgl
diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp
index 792586e73d..029c761e53 100644
--- a/src/mbgl/tile/geometry_tile.cpp
+++ b/src/mbgl/tile/geometry_tile.cpp
@@ -42,6 +42,7 @@ GeometryTile::GeometryTile(const OverscaledTileID& id_,
std::string sourceID_,
const TileParameters& parameters)
: Tile(Kind::Geometry, id_),
+ ImageRequestor(parameters.imageManager),
sourceID(std::move(sourceID_)),
mailbox(std::make_shared<Mailbox>(*Scheduler::GetCurrent())),
worker(parameters.workerScheduler,
@@ -60,7 +61,6 @@ GeometryTile::GeometryTile(const OverscaledTileID& id_,
GeometryTile::~GeometryTile() {
glyphManager.removeRequestor(*this);
- imageManager.removeRequestor(*this);
markObsolete();
}
diff --git a/src/mbgl/tile/geometry_tile.hpp b/src/mbgl/tile/geometry_tile.hpp
index 18f94b9a1f..975c7aab0e 100644
--- a/src/mbgl/tile/geometry_tile.hpp
+++ b/src/mbgl/tile/geometry_tile.hpp
@@ -22,7 +22,7 @@ class TileParameters;
class GlyphAtlas;
class ImageAtlas;
-class GeometryTile : public Tile, public GlyphRequestor, ImageRequestor {
+class GeometryTile : public Tile, public GlyphRequestor, public ImageRequestor {
public:
GeometryTile(const OverscaledTileID&,
std::string sourceID,