diff --git a/src/mbgl/renderer/layers/render_fill_layer.cpp b/src/mbgl/renderer/layers/render_fill_layer.cpp index 546295016..7464d7ac0 100644 --- a/src/mbgl/renderer/layers/render_fill_layer.cpp +++ b/src/mbgl/renderer/layers/render_fill_layer.cpp @@ -435,14 +435,6 @@ void RenderFillLayer::update(gfx::ShaderRegistry& shaders, fillVertexAttrs.clear(); outlineVertexAttrs.clear(); - gfx::DrawableTweakerPtr tweaker; - if (fillBuilder) { - fillBuilder->clearTweakers(); - } - if (outlineBuilder) { - outlineBuilder->clearTweakers(); - } - // `Fill*Program` all use `style::FillPaintProperties` const auto fillUniformProps = fillVertexAttrs.readDataDrivenPaintProperties( @@ -529,9 +521,6 @@ void RenderFillLayer::update(gfx::ShaderRegistry& shaders, builder->setColorMode(gfx::ColorMode::alphaBlended()); builder->setSubLayerIndex(1); builder->setRenderPass(RenderPass::Translucent); - if (tweaker) { - builder->addTweaker(tweaker); - } patternBuilder = std::move(builder); } } @@ -543,24 +532,28 @@ void RenderFillLayer::update(gfx::ShaderRegistry& shaders, builder->setColorMode(gfx::ColorMode::alphaBlended()); builder->setSubLayerIndex(2); builder->setRenderPass(RenderPass::Translucent); - if (tweaker) { - builder->addTweaker(tweaker); - } outlinePatternBuilder = std::move(builder); } } - if ((patternBuilder || outlineBuilder) && !tweaker) { + gfx::DrawableTweakerPtr tweaker; + if (patternBuilder) { + patternBuilder->clearTweakers(); + } + if (outlinePatternBuilder) { + outlinePatternBuilder->clearTweakers(); + } + if ((patternBuilder || outlinePatternBuilder) && !tweaker) { if (const auto& atlases = tile.getAtlasTextures()) { - tweaker = std::make_shared(atlases, - /*glyphName=*/std::string(), - std::string(IconTextureName), - /*isText=*/false); + auto tweaker = std::make_shared(atlases, + /*glyphName=*/std::string(), + std::string(IconTextureName), + /*isText=*/false); if (patternBuilder) { patternBuilder->addTweaker(tweaker); } - if (outlineBuilder) { - outlineBuilder->addTweaker(tweaker); + if (outlinePatternBuilder) { + outlinePatternBuilder->addTweaker(std::move(tweaker)); } } }