diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/map/map.cpp | 18 | ||||
-rw-r--r-- | src/mbgl/map/map_data.hpp | 9 |
2 files changed, 21 insertions, 6 deletions
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index 8d4dd1461d..4ebd4100b9 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -649,14 +649,15 @@ std::vector<std::string> Map::getClasses() const { } void Map::setDefaultTransitionDuration(std::chrono::steady_clock::duration duration) { - defaultTransitionDuration = duration; - if (style) { - style->setDefaultTransitionDuration(duration); - } + assert(Environment::currentlyOn(ThreadType::Main)); + + data->setDefaultTransitionDuration(duration); + triggerUpdate(Update::DefaultTransitionDuration); } std::chrono::steady_clock::duration Map::getDefaultTransitionDuration() { - return defaultTransitionDuration; + assert(Environment::currentlyOn(ThreadType::Main)); + return data->getDefaultTransitionDuration(); } void Map::updateSources() { @@ -753,7 +754,7 @@ void Map::loadStyleJSON(const std::string& json, const std::string& base) { style->base = base; style->loadJSON((const uint8_t *)json.c_str()); style->cascadeClasses(classes); - style->setDefaultTransitionDuration(defaultTransitionDuration); + style->setDefaultTransitionDuration(data->getDefaultTransitionDuration()); const std::string glyphURL = util::mapbox::normalizeGlyphsURL(style->glyph_url, getAccessToken()); glyphStore->setURL(glyphURL); @@ -772,6 +773,11 @@ void Map::prepare() { assert(painter); painter->setDebug(data->getDebug()); } + if (u & static_cast<UpdateType>(Update::DefaultTransitionDuration)) { + if (style) { + style->setDefaultTransitionDuration(data->getDefaultTransitionDuration()); + } + } // Update transform transitions. diff --git a/src/mbgl/map/map_data.hpp b/src/mbgl/map/map_data.hpp index 8efa43911b..972ad34064 100644 --- a/src/mbgl/map/map_data.hpp +++ b/src/mbgl/map/map_data.hpp @@ -20,6 +20,7 @@ class MapData { public: inline MapData() { setAnimationTime(std::chrono::steady_clock::time_point::min()); + setDefaultTransitionDuration(std::chrono::steady_clock::duration::zero()); } inline StyleInfo getStyleInfo() const { @@ -50,12 +51,20 @@ public: animationTime = timePoint.time_since_epoch(); }; + inline std::chrono::steady_clock::duration getDefaultTransitionDuration() const { + return defaultTransitionDuration; + } + inline void setDefaultTransitionDuration(std::chrono::steady_clock::duration duration) { + defaultTransitionDuration = duration; + }; + private: mutable std::mutex mtx; StyleInfo styleInfo; std::atomic<uint8_t> debug { false }; std::atomic<std::chrono::steady_clock::time_point::duration> animationTime; + std::atomic<std::chrono::steady_clock::duration> defaultTransitionDuration; }; } |