summaryrefslogtreecommitdiff
path: root/src/mbgl/style/style.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/style/style.cpp')
-rw-r--r--src/mbgl/style/style.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/mbgl/style/style.cpp b/src/mbgl/style/style.cpp
index 1fc738cb84..d2821751be 100644
--- a/src/mbgl/style/style.cpp
+++ b/src/mbgl/style/style.cpp
@@ -329,7 +329,7 @@ double Style::getDefaultPitch() const {
}
void Style::update(const UpdateParameters& parameters) {
- zoomHistory.update(parameters.transformState.getZoom(), parameters.timePoint);
+ bool zoomChanged = zoomHistory.update(parameters.transformState.getZoom(), parameters.timePoint);
std::vector<ClassID> classIDs;
for (const auto& className : classes) {
@@ -358,11 +358,14 @@ void Style::update(const UpdateParameters& parameters) {
parameters.annotationManager,
*this);
- if (parameters.updateFlags & Update::Classes) {
+ const bool cascade = parameters.updateFlags & Update::Classes;
+ const bool evaluate = cascade || zoomChanged || parameters.updateFlags & Update::RecalculateStyle;
+
+ if (cascade) {
transitioningLight = TransitioningLight(*light, std::move(transitioningLight), cascadeParameters);
}
- if (parameters.updateFlags & Update::RecalculateStyle) {
+ if (evaluate || transitioningLight.hasTransition()) {
evaluatedLight = EvaluatedLight(transitioningLight, evaluationParameters);
}
@@ -371,11 +374,11 @@ void Style::update(const UpdateParameters& parameters) {
}
for (const auto& layer : renderLayers) {
- if (parameters.updateFlags & Update::Classes) {
+ if (cascade) {
layer->cascade(cascadeParameters);
}
- if (parameters.updateFlags & Update::Classes || parameters.updateFlags & Update::RecalculateStyle) {
+ if (evaluate || layer->hasTransition()) {
layer->evaluate(evaluationParameters);
}