glrenderer: Shadows without offset do exist
authorBenjamin Otte <otte@redhat.com>
Thu, 7 Sep 2023 21:02:37 +0000 (23:02 +0200)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 19 Sep 2023 20:32:27 +0000 (16:32 -0400)
Not for opaque contents, but stuff can be semi-transparent.

Testcase included.

gsk/gl/gskglrenderjob.c
testsuite/gsk/compare/shadow-behind.node [new file with mode: 0644]
testsuite/gsk/compare/shadow-behind.png [new file with mode: 0644]
testsuite/gsk/meson.build

index c862cb50a3ce816b6381a2e0742fe782a0161198..6f3db87c24eea015edaef7e4467fc3ae8d779c09 100644 (file)
@@ -3153,10 +3153,6 @@ gsk_gl_render_job_visit_shadow_node (GskGLRenderJob      *job,
 
           offscreen.was_offscreen = TRUE;
         }
-      else if (dx == 0 && dy == 0)
-        {
-          continue; /* Invisible anyway */
-        }
       else
         {
           offscreen.bounds = &shadow_child->bounds;
diff --git a/testsuite/gsk/compare/shadow-behind.node b/testsuite/gsk/compare/shadow-behind.node
new file mode 100644 (file)
index 0000000..2ab2225
--- /dev/null
@@ -0,0 +1,7 @@
+shadow {
+  shadows: rgb(255,0,0) 0 0;
+  child: color {
+    bounds: 0 0 50 50;
+    color: rgba(0,0,255,0.6);
+  }
+}
diff --git a/testsuite/gsk/compare/shadow-behind.png b/testsuite/gsk/compare/shadow-behind.png
new file mode 100644 (file)
index 0000000..1fd035d
Binary files /dev/null and b/testsuite/gsk/compare/shadow-behind.png differ
index 944d4f8f99a5ae2a41bb3fe5d5d745a42fb8eb33..53da9d1dcc7c50bf889e56651009f14957397461 100644 (file)
@@ -89,6 +89,7 @@ compare_render_tests = [
   'scale-up-down',
   'scaled-cairo',
   'scaled-texture',
+  'shadow-behind',
   'shadow-in-opacity',
   'shadow-opacity',
   'texture-scale-magnify-10000x',