From 77d5b5e94fdfc0805c6c0dea52fa611f7fc503fe Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Thu, 7 Sep 2023 22:57:57 +0200 Subject: [PATCH] rendernode: Shadow nodes need offscreen for opacity Otherwise the shadow will not be properly computed as opaque regions become translucent after applying opacity. Testcase included. --- gsk/gskrendernodeimpl.c | 2 +- testsuite/gsk/compare/shadow-opacity.node | 10 ++++++++++ testsuite/gsk/compare/shadow-opacity.png | Bin 0 -> 185 bytes testsuite/gsk/meson.build | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 testsuite/gsk/compare/shadow-opacity.node create mode 100644 testsuite/gsk/compare/shadow-opacity.png diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c index 08bdc58e47..80bf406ae3 100644 --- a/gsk/gskrendernodeimpl.c +++ b/gsk/gskrendernodeimpl.c @@ -4593,7 +4593,7 @@ gsk_shadow_node_new (GskRenderNode *child, self = gsk_render_node_alloc (GSK_SHADOW_NODE); node = (GskRenderNode *) self; - node->offscreen_for_opacity = child->offscreen_for_opacity; + node->offscreen_for_opacity = TRUE; self->child = gsk_render_node_ref (child); self->n_shadows = n_shadows; diff --git a/testsuite/gsk/compare/shadow-opacity.node b/testsuite/gsk/compare/shadow-opacity.node new file mode 100644 index 0000000000..d9bded6b84 --- /dev/null +++ b/testsuite/gsk/compare/shadow-opacity.node @@ -0,0 +1,10 @@ +opacity { + opacity: 0.6; + child: shadow { + shadows: rgb(255,0,0) 10 10; + child: color { + bounds: 0 0 50 50; + color: rgb(0,0,255); + } + } +} diff --git a/testsuite/gsk/compare/shadow-opacity.png b/testsuite/gsk/compare/shadow-opacity.png new file mode 100644 index 0000000000000000000000000000000000000000..ab25ef430affacf386283a703bab4ecf43c777ef GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$;i84W2HJAsLNtZ*Al~Y{0|dsC8o9 zOwG$y+AB5)KK>KF`9X6p*V>tnty{j{oLLpS_t;&LHQEv38`dS<{e7Q%&eIt;s|@Yl z9b$dWbxjm15qoe~Qz;IC=-th`|1Ws=u25VLYzR=T{I^%ED>az6eg?XQ!PC{xWt~$( F69CqpPXhn| literal 0 HcmV?d00001 diff --git a/testsuite/gsk/meson.build b/testsuite/gsk/meson.build index eb76c4a889..944d4f8f99 100644 --- a/testsuite/gsk/meson.build +++ b/testsuite/gsk/meson.build @@ -90,6 +90,7 @@ compare_render_tests = [ 'scaled-cairo', 'scaled-texture', 'shadow-in-opacity', + 'shadow-opacity', 'texture-scale-magnify-10000x', 'texture-scale-magnify-rotate', 'texture-scale-stripes', -- 2.30.2