Fix accidental regression conditional layer evaluation (#2705)

This commit is contained in:
Tim Sylvester
2024-08-09 14:54:54 -07:00
committed by GitHub
parent 942f43ef80
commit 60c1d351cf

View File

@@ -309,7 +309,14 @@ std::unique_ptr<RenderTree> RenderOrchestrator::createRenderTree(
const bool layerAddedOrChanged = layerDiff.added.count(id) || layerDiff.changed.count(id);
evaluationParameters.layerChanged = layerAddedOrChanged;
evaluationParameters.hasCrossfade = layer.hasCrossfade();
if (layerAddedOrChanged || zoomChanged || evaluationParameters.hasCrossfade || layer.hasTransition()) {
// Only re-evaluate on change of zoom if the style has some reference to it
using Dependency = expression::Dependency;
const bool zoomChangedAndMatters = zoomChanged && !layerAddedOrChanged &&
(layer.getStyleDependencies() & Dependency::Zoom);
if (layerAddedOrChanged || zoomChangedAndMatters || evaluationParameters.hasCrossfade ||
layer.hasTransition()) {
const auto previousMask = layer.evaluatedProperties->constantsMask();
layer.evaluate(evaluationParameters);
if (previousMask != layer.evaluatedProperties->constantsMask()) {