move defaultTransitionDuration to MapData

This commit is contained in:
Konstantin Käfer
2015-03-20 19:22:27 +01:00
parent 268975d4c2
commit 9637176711
3 changed files with 25 additions and 11 deletions

View File

@@ -78,9 +78,10 @@ public:
// Notifies the Map thread that the state has changed and an update might be necessary.
using UpdateType = uint32_t;
enum class Update : UpdateType {
Nothing = 0,
StyleInfo = 1 << 0,
Debug = 1 << 1,
Nothing = 0,
StyleInfo = 1 << 0,
Debug = 1 << 1,
DefaultTransitionDuration = 1 << 2,
};
void triggerUpdate(Update = Update::Nothing);
@@ -253,8 +254,6 @@ private:
std::vector<std::string> classes;
std::string accessToken;
std::chrono::steady_clock::duration defaultTransitionDuration;
std::set<util::ptr<StyleSource>> activeSources;
std::atomic<UpdateType> updated;

View File

@@ -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.

View File

@@ -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;
};
}