fixes #1675: abstract annotation tile refresh check/render; trigger post-sprite/sprite store load

This commit is contained in:
Justin R. Miller
2015-09-08 18:03:10 -07:00
parent 7127cfebb5
commit db28ef37db
6 changed files with 20 additions and 2 deletions

View File

@@ -52,6 +52,7 @@ public:
~AnnotationManager();
void markStaleTiles(std::unordered_set<TileID, TileID::Hash>);
size_t getStaleTileCount() const { return staleTiles.size(); }
std::unordered_set<TileID, TileID::Hash> resetStaleTiles();
void setDefaultPointAnnotationSymbol(const std::string& symbol);

View File

@@ -142,9 +142,11 @@ void MapContext::loadStyleJSON(const std::string& json, const std::string& base)
updateFlags |= Update::DefaultTransition | Update::Classes | Update::Zoom;
asyncUpdate->send();
}
auto staleTiles = data.getAnnotationManager()->resetStaleTiles();
if (!staleTiles.empty()) {
void MapContext::updateAnnotationTilesIfNeeded() {
if (data.getAnnotationManager()->getStaleTileCount()) {
auto staleTiles = data.getAnnotationManager()->resetStaleTiles();
updateAnnotationTiles(staleTiles);
}
}
@@ -417,4 +419,8 @@ void MapContext::onResourceLoadingFailed(std::exception_ptr error) {
}
}
void MapContext::onSpriteStoreLoaded() {
updateAnnotationTilesIfNeeded();
}
}

View File

@@ -54,6 +54,7 @@ public:
bool isLoaded() const;
double getTopOffsetPixelsForAnnotationSymbol(const std::string& symbol);
void updateAnnotationTilesIfNeeded();
void updateAnnotationTiles(const std::unordered_set<TileID, TileID::Hash>&);
void setSourceTileCacheSize(size_t size);
@@ -66,6 +67,7 @@ public:
// Style::Observer implementation.
void onTileDataChanged() override;
void onResourceLoadingFailed(std::exception_ptr error) override;
void onSpriteStoreLoaded() override;
private:
// Update the state indicated by the accumulated Update flags, then render.

View File

@@ -190,6 +190,10 @@ void Style::onSpriteLoaded(const Sprites& sprites) {
// Add all sprite images to the SpriteStore object
spriteStore->setSprites(sprites);
if (observer) {
observer->onSpriteStoreLoaded();
}
shouldReparsePartialTiles = true;
emitTileDataChanged();
}

View File

@@ -39,6 +39,7 @@ public:
virtual ~Observer() = default;
virtual void onTileDataChanged() = 0;
virtual void onSpriteStoreLoaded() = 0;
virtual void onResourceLoadingFailed(std::exception_ptr error) = 0;
};

View File

@@ -63,6 +63,10 @@ public:
callback_(error);
}
void onSpriteStoreLoaded() override {
// no-op
}
private:
MapData data_;
Transform transform_;