summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-03-14 05:30:17 +0000
committerMatthias Clasen <mclasen@redhat.com>2023-03-14 05:30:17 +0000
commit664ce48a4c6ec21e6baec4e1e344ca3b8523b6a1 (patch)
tree37385bc9bba0fca1654267f1548feb8bb535a32a
parent7b1644b2d0b8d658c789877265624f3cd695c1b6 (diff)
parent42f1b623bf5b6231057ff3bdc18ad33d8e1504f7 (diff)
downloadgtk+-664ce48a4c6ec21e6baec4e1e344ca3b8523b6a1.tar.gz
Merge branch 'matthiasc/for-main' into 'main'
gsk: Mark mask nodes as 'supports transforms' See merge request GNOME/gtk!5650
-rw-r--r--gsk/gl/gskglrenderjob.c1
-rw-r--r--gtk/gtkcssnumbervalue.c7
-rw-r--r--gtk/gtkicontheme.c1
-rw-r--r--testsuite/gsk/compare/texture-scale-magnify-rotate.node11
-rw-r--r--testsuite/gsk/compare/texture-scale-magnify-rotate.pngbin0 -> 98 bytes
-rw-r--r--testsuite/gsk/meson.build3
-rw-r--r--testsuite/gsk/nodeparser/texture-scale-filters.node22
-rw-r--r--testsuite/gsk/nodeparser/texture-scale-filters.ref.node26
8 files changed, 66 insertions, 5 deletions
diff --git a/gsk/gl/gskglrenderjob.c b/gsk/gl/gskglrenderjob.c
index ce7ce774d1..30d7c9cc51 100644
--- a/gsk/gl/gskglrenderjob.c
+++ b/gsk/gl/gskglrenderjob.c
@@ -315,6 +315,7 @@ node_supports_transform (const GskRenderNode *node)
case GSK_CAIRO_NODE:
case GSK_BLEND_NODE:
case GSK_BLUR_NODE:
+ case GSK_MASK_NODE:
return TRUE;
case GSK_SHADOW_NODE:
diff --git a/gtk/gtkcssnumbervalue.c b/gtk/gtkcssnumbervalue.c
index cd8c942c01..270711b27c 100644
--- a/gtk/gtkcssnumbervalue.c
+++ b/gtk/gtkcssnumbervalue.c
@@ -758,11 +758,8 @@ _gtk_css_number_value_get (const GtkCssValue *value,
gboolean
gtk_css_dimension_value_is_zero (const GtkCssValue *value)
{
- if (!value)
- return TRUE;
-
- if (value->class != &GTK_CSS_VALUE_NUMBER)
- return FALSE;
+ g_assert (value != 0);
+ g_assert (value->class == &GTK_CSS_VALUE_NUMBER);
if (value->type != TYPE_DIMENSION)
return FALSE;
diff --git a/gtk/gtkicontheme.c b/gtk/gtkicontheme.c
index 66c7d97f34..729f632852 100644
--- a/gtk/gtkicontheme.c
+++ b/gtk/gtkicontheme.c
@@ -3051,6 +3051,7 @@ theme_lookup_icon (IconTheme *theme,
min_difference = G_MAXINT;
min_dir_size = NULL;
+ min_file = NULL;
for (i = 0; i < theme->dir_sizes->len; i++)
{
diff --git a/testsuite/gsk/compare/texture-scale-magnify-rotate.node b/testsuite/gsk/compare/texture-scale-magnify-rotate.node
new file mode 100644
index 0000000000..e50c8ba126
--- /dev/null
+++ b/testsuite/gsk/compare/texture-scale-magnify-rotate.node
@@ -0,0 +1,11 @@
+clip {
+ clip: 24995 24995 10 10;
+ child: transform {
+ transform: translate(25000, 25000) rotate(90) translate(-25000, -25000);
+ child: texture-scale {
+ texture: url("data:;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAKElEQVQYlWNkYGD4z4AG/v/HEGJgwhDBAQZQIQs2hzMyMtLBauorBACQUgcSISWLRgAAAABJRU5ErkJggg==");
+ bounds: 0 0 50000 50000;
+ filter: nearest;
+ }
+ }
+}
diff --git a/testsuite/gsk/compare/texture-scale-magnify-rotate.png b/testsuite/gsk/compare/texture-scale-magnify-rotate.png
new file mode 100644
index 0000000000..9feff7a484
--- /dev/null
+++ b/testsuite/gsk/compare/texture-scale-magnify-rotate.png
Binary files differ
diff --git a/testsuite/gsk/meson.build b/testsuite/gsk/meson.build
index 1ded899729..ca8f833589 100644
--- a/testsuite/gsk/meson.build
+++ b/testsuite/gsk/meson.build
@@ -77,6 +77,7 @@ compare_render_tests = [
'scaled-texture',
'shadow-in-opacity',
'texture-scale-magnify-10000x',
+ 'texture-scale-magnify-rotate',
'texture-scale-stripes',
'texture-url',
'transform-in-transform',
@@ -234,6 +235,8 @@ node_parser_tests = [
'texture-fail.node',
'texture-fail.ref.node',
'texture-fail.ref.errors',
+ 'texture-scale-filters.node',
+ 'texture-scale-filters.ref.node',
'texture-scale-unknown-filter.errors',
'texture-scale-unknown-filter.node',
'texture-scale-unknown-filter.ref.node',
diff --git a/testsuite/gsk/nodeparser/texture-scale-filters.node b/testsuite/gsk/nodeparser/texture-scale-filters.node
new file mode 100644
index 0000000000..1aef466ce5
--- /dev/null
+++ b/testsuite/gsk/nodeparser/texture-scale-filters.node
@@ -0,0 +1,22 @@
+texture-scale {
+ texture: url('data:,<svg><rect width="10" height="10" style="fill:red"/></svg>');
+ bounds: 0 0 50 50;
+}
+
+texture-scale {
+ texture: url('data:,<svg><rect width="10" height="10" style="fill:red"/></svg>');
+ bounds: 0 0 50 50;
+ filter: linear;
+}
+
+texture-scale {
+ texture: url('data:,<svg><rect width="10" height="10" style="fill:red"/></svg>');
+ bounds: 0 0 50 50;
+ filter: nearest;
+}
+
+texture-scale {
+ texture: url('data:,<svg><rect width="10" height="10" style="fill:red"/></svg>');
+ bounds: 0 0 50 50;
+ filter: trilinear;
+}
diff --git a/testsuite/gsk/nodeparser/texture-scale-filters.ref.node b/testsuite/gsk/nodeparser/texture-scale-filters.ref.node
new file mode 100644
index 0000000000..957013272e
--- /dev/null
+++ b/testsuite/gsk/nodeparser/texture-scale-filters.ref.node
@@ -0,0 +1,26 @@
+texture-scale {
+ bounds: 0 0 50 50;
+ texture: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWP8z8Dwn4EIwESMolGF\
+1FMIAD2cAhL1w47oAAAAAElFTkSuQmCC\
+");
+}
+texture-scale {
+ bounds: 0 0 50 50;
+ texture: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWP8z8Dwn4EIwESMolGF\
+1FMIAD2cAhL1w47oAAAAAElFTkSuQmCC\
+");
+}
+texture-scale {
+ bounds: 0 0 50 50;
+ filter: nearest;
+ texture: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWP8z8Dwn4EIwESMolGF\
+1FMIAD2cAhL1w47oAAAAAElFTkSuQmCC\
+");
+}
+texture-scale {
+ bounds: 0 0 50 50;
+ filter: trilinear;
+ texture: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWP8z8Dwn4EIwESMolGF\
+1FMIAD2cAhL1w47oAAAAAElFTkSuQmCC\
+");
+}