[core] Avoid calling AnnotationManager::updateStyle until the style is loaded

Fixes #3037
This commit is contained in:
John Firebaugh
2015-11-18 13:21:16 -08:00
committed by Justin R. Miller
parent fcec19b835
commit db1c4f2cc2
3 changed files with 8 additions and 1 deletions

View File

@@ -169,7 +169,7 @@ void MapContext::update() {
data.setAnimationTime(Clock::now());
if (updateFlags & Update::Annotations) {
if (style->isLoaded() && updateFlags & Update::Annotations) {
data.getAnnotationManager()->updateStyle(*style);
updateFlags |= Update::Classes;
}

View File

@@ -57,6 +57,8 @@ void Style::setJSON(const std::string& json, const std::string&) {
glyphStore->setURL(parser.getGlyphURL());
spriteStore->setURL(parser.getSpriteURL());
loaded = true;
}
Style::~Style() {
@@ -175,6 +177,10 @@ bool Style::hasTransitions() const {
}
bool Style::isLoaded() const {
if (!loaded) {
return false;
}
for (const auto& source : sources) {
if (!source->isLoaded()) {
return false;

View File

@@ -100,6 +100,7 @@ private:
void emitTileDataChanged();
void emitResourceLoadingFailed(std::exception_ptr error);
bool loaded = false;
bool shouldReparsePartialTiles = false;
Observer* observer = nullptr;