From 7c9ee88078578c9ed9a7a85bfb1f836b3ad48f75 Mon Sep 17 00:00:00 2001 From: Kacper Kasper Date: Sun, 4 Jan 2026 23:01:09 +0100 Subject: [PATCH] app_server: Remove special case for fully opaque layers * Fixes #19871. Change-Id: I4b74dc9fae512530ed1d0bec74d73c24c6a99ea3 Reviewed-on: https://review.haiku-os.org/c/haiku/+/10212 Tested-by: Commit checker robot Reviewed-by: Adrien Destugues --- src/servers/app/Canvas.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/servers/app/Canvas.cpp b/src/servers/app/Canvas.cpp index 7a3fbc3ac5..d055f14063 100644 --- a/src/servers/app/Canvas.cpp +++ b/src/servers/app/Canvas.cpp @@ -238,11 +238,6 @@ Canvas::BlendLayer(Layer* layerPtr) { BReference layer(layerPtr, true); - if (layer->Opacity() == 255) { - layer->Play(this); - return; - } - BReference layerBitmap(layer->RenderToBitmap(this), true); if (layerBitmap == NULL) return; @@ -257,11 +252,13 @@ Canvas::BlendLayer(Layer* layerPtr) fDrawState->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_COMPOSITE); fDrawState->SetTransformEnabled(false); - BReference mask(new(std::nothrow) UniformAlphaMask(layer->Opacity()), true); - if (mask == NULL) - return; + if (layer->Opacity() < 255) { + BReference mask(new(std::nothrow) UniformAlphaMask(layer->Opacity()), true); + if (mask == NULL) + return; - SetAlphaMask(mask); + SetAlphaMask(mask); + } ResyncDrawState(); GetDrawingEngine()->DrawBitmap(layerBitmap, layerBitmap->Bounds(),