From db548ee2a05ab1d2bc9bb44de9d20111e485dbe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= Date: Sun, 2 Jun 2019 10:25:39 +0200 Subject: [PATCH] gl renderer: Fix scale computation We don't need to just look at the scale of the new modelview matrix, but at the one we get when multiplying the new one with the current one. Test case attached. --- gsk/gl/gskglrenderops.c | 2 +- testsuite/gsk/compare/scale-up-down.node | 39 +++++++++++++++++++++++ testsuite/gsk/compare/scale-up-down.png | Bin 0 -> 708 bytes testsuite/gsk/meson.build | 1 + 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 testsuite/gsk/compare/scale-up-down.node create mode 100644 testsuite/gsk/compare/scale-up-down.png diff --git a/gsk/gl/gskglrenderops.c b/gsk/gl/gskglrenderops.c index 52529e4f60..9c99fba915 100644 --- a/gsk/gl/gskglrenderops.c +++ b/gsk/gl/gskglrenderops.c @@ -450,7 +450,7 @@ ops_push_modelview (RenderOpBuilder *builder, entry->metadata.dx_before = builder->dx; entry->metadata.dy_before = builder->dy; - extract_matrix_metadata (transform, &entry->metadata); + extract_matrix_metadata (entry->transform, &entry->metadata); builder->dx = 0; builder->dy = 0; diff --git a/testsuite/gsk/compare/scale-up-down.node b/testsuite/gsk/compare/scale-up-down.node new file mode 100644 index 0000000000..caa021e34f --- /dev/null +++ b/testsuite/gsk/compare/scale-up-down.node @@ -0,0 +1,39 @@ +transform{ + transform: scale(0.5); + child: transform { + transform: scale(8); + child: clip { + clip: 0 0 50 50 / 20 0 0 0; + child: color { + color: teal; + } + } + } +} + +debug { + message: "clipped-out area"; + child: container { + color { color: black; + bounds: 0 50 10 30; } + color { color: black; + bounds: 5 40 10 10; } + color { color: black; + bounds: 10 35 10 10; } + color { color: black; + bounds: 12 30 10 10; } + color { color: black; + bounds: 17 23 10 10; } + color { color: black; + bounds: 23 16 10 10; } + color { color: black; + bounds: 30 11 10 10; } + color { color: black; + bounds: 38 4 10 10; } + color { color: black; + bounds: 47 2 10 10; } + color { color: black; + bounds: 54 0 50 10; } + } + +} \ No newline at end of file diff --git a/testsuite/gsk/compare/scale-up-down.png b/testsuite/gsk/compare/scale-up-down.png new file mode 100644 index 0000000000000000000000000000000000000000..83ee845f5f3ac700ded42731d38ca8a26bf6e8c4 GIT binary patch literal 708 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k4M?tyST_$yu_bxCyDM+E^E5b>u2o|E1pJ zm>$+f1pyAG#tqN;9(hi`y#Xw>Cq2%8m(GDEhaab#cFZZZ7Gr60P~ZR&Ir(lMH6 zIqigS(vLUWBlMo=oNI!+@a@Oj`DbHK>{LX!0qhX6iH9%aZ$Gr9mT9nXA=^2F-GGPe Xi!{X+&GN9=%>V?Ru6{1-oD!M