diff options
Diffstat (limited to 'src/mbgl/style/style.cpp')
-rw-r--r-- | src/mbgl/style/style.cpp | 78 |
1 files changed, 35 insertions, 43 deletions
diff --git a/src/mbgl/style/style.cpp b/src/mbgl/style/style.cpp index 77a544714e..b1c867a692 100644 --- a/src/mbgl/style/style.cpp +++ b/src/mbgl/style/style.cpp @@ -17,6 +17,7 @@ #include <mbgl/geometry/glyph_atlas.hpp> #include <mbgl/geometry/line_atlas.hpp> #include <mbgl/util/constants.hpp> +#include <mbgl/util/string.hpp> #include <mbgl/platform/log.hpp> #include <mbgl/layer/background_layer.hpp> @@ -304,73 +305,64 @@ void Style::onLowMemory() { void Style::setObserver(Observer* observer_) { assert(util::ThreadContext::currentlyOn(util::ThreadType::Map)); - assert(!observer); - observer = observer_; } -void Style::onGlyphRangeLoaded() { +void Style::onGlyphsLoaded(const std::string& fontStack, const GlyphRange& glyphRange) { shouldReparsePartialTiles = true; - - emitTileDataChanged(); + observer->onGlyphsLoaded(fontStack, glyphRange); + observer->onResourceLoaded(); } -void Style::onGlyphRangeLoadingFailed(std::exception_ptr error) { - emitResourceLoadingFailed(error); +void Style::onGlyphsError(const std::string& fontStack, const GlyphRange& glyphRange, std::exception_ptr error) { + lastError = error; + Log::Error(Event::Style, "Failed to load glyph range %d-%d for font stack %s: %s", + glyphRange.first, glyphRange.second, fontStack.c_str(), util::toString(error).c_str()); + observer->onGlyphsError(fontStack, glyphRange, error); + observer->onResourceError(error); } -void Style::onSourceLoaded() { - emitTileDataChanged(); +void Style::onSourceLoaded(Source& source) { + observer->onSourceLoaded(source); + observer->onResourceLoaded(); } -void Style::onSourceLoadingFailed(std::exception_ptr error) { - emitResourceLoadingFailed(error); +void Style::onSourceError(Source& source, std::exception_ptr error) { + lastError = error; + Log::Error(Event::Style, "Failed to load source %s: %s", + source.info.source_id.c_str(), util::toString(error).c_str()); + observer->onSourceError(source, error); + observer->onResourceError(error); } -void Style::onTileLoaded(bool isNewTile) { +void Style::onTileLoaded(Source& source, const TileID& tileID, bool isNewTile) { if (isNewTile) { shouldReparsePartialTiles = true; } - emitTileDataChanged(); + observer->onTileLoaded(source, tileID, isNewTile); + observer->onResourceLoaded(); } -void Style::onTileLoadingFailed(std::exception_ptr error) { - emitResourceLoadingFailed(error); +void Style::onTileError(Source& source, const TileID& tileID, std::exception_ptr error) { + lastError = error; + Log::Error(Event::Style, "Failed to load tile %s for source %s: %s", + std::string(tileID).c_str(), source.info.source_id.c_str(), util::toString(error).c_str()); + observer->onTileError(source, tileID, error); + observer->onResourceError(error); } void Style::onSpriteLoaded() { shouldReparsePartialTiles = true; - emitTileDataChanged(); -} - -void Style::onSpriteLoadingFailed(std::exception_ptr error) { - emitResourceLoadingFailed(error); + observer->onSpriteLoaded(); + observer->onResourceLoaded(); } -void Style::emitTileDataChanged() { - assert(util::ThreadContext::currentlyOn(util::ThreadType::Map)); - - if (observer) { - observer->onTileDataChanged(); - } -} - -void Style::emitResourceLoadingFailed(std::exception_ptr error) { - assert(util::ThreadContext::currentlyOn(util::ThreadType::Map)); - - try { - if (error) { - lastError = error; - std::rethrow_exception(error); - } - } catch(const std::exception& e) { - Log::Error(Event::Style, "%s", e.what()); - } - - if (observer) { - observer->onResourceLoadingFailed(error); - } +void Style::onSpriteError(std::exception_ptr error) { + lastError = error; + Log::Error(Event::Style, "Failed to load sprite: %s", util::toString(error).c_str()); + observer->onSpriteError(error); + observer->onResourceError(error); } void Style::dumpDebugLogs() const { |