aboutsummaryrefslogtreecommitdiffstats
path: root/src/mbgl/map/source.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/map/source.hpp')
-rw-r--r--src/mbgl/map/source.hpp29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/mbgl/map/source.hpp b/src/mbgl/map/source.hpp
index b15de0e64..eb7950225 100644
--- a/src/mbgl/map/source.hpp
+++ b/src/mbgl/map/source.hpp
@@ -29,6 +29,7 @@ class Sprite;
class TexturePool;
class Style;
class Painter;
+class Request;
class TransformState;
class Tile;
struct ClipID;
@@ -52,12 +53,18 @@ public:
class Source : public std::enable_shared_from_this<Source>, private util::noncopyable {
public:
+ class Observer {
+ public:
+ virtual ~Observer() = default;
+
+ virtual void onSourceLoaded() = 0;
+ virtual void onTileLoaded() = 0;
+ };
+
Source();
~Source();
- void load(const std::string& accessToken,
- Environment&,
- std::function<void()> callback);
+ void load(const std::string& accessToken);
bool isLoaded() const;
void load(MapData&, Environment&, std::function<void()> callback);
@@ -68,8 +75,7 @@ public:
GlyphStore&,
SpriteAtlas&,
util::ptr<Sprite>,
- TexturePool&,
- std::function<void()> callback);
+ TexturePool&);
void invalidateTiles(const std::vector<TileID>&);
@@ -82,11 +88,18 @@ public:
void setCacheSize(size_t);
void onLowMemory();
+ void clearRequest();
+
+ void setObserver(Observer* observer);
SourceInfo info;
bool enabled;
private:
+ void emitSourceLoaded();
+ void emitTileLoaded();
+
+ void handlePartialTile(const TileID &id, Worker &worker);
bool findLoadedChildren(const TileID& id, int32_t maxCoveringZoom, std::forward_list<TileID>& retain);
bool findLoadedParent(const TileID& id, int32_t minCoveringZoom, std::forward_list<TileID>& retain);
int32_t coveringZoomLevel(const TransformState&) const;
@@ -100,8 +113,7 @@ private:
SpriteAtlas&,
util::ptr<Sprite>,
TexturePool&,
- const TileID&,
- std::function<void()> callback);
+ const TileID&);
TileData::State hasTile(const TileID& id);
void updateTilePtrs();
@@ -117,6 +129,9 @@ private:
std::vector<Tile*> tilePtrs;
std::map<TileID, std::weak_ptr<TileData>> tile_data;
TileCache cache;
+
+ Request* req = nullptr;
+ Observer* observer_ = nullptr;
};
}