From 3434bf8af1826d2153a907cd09a38d7ae5096994 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Fri, 24 Sep 2021 15:08:12 +0200 Subject: [PATCH] internal/ops: don't run deferred macros twice Discovered while debugging #277. Signed-off-by: Elias Naur --- .../rendertest/refs/TestDeferredPaint.png | Bin 318 -> 487 bytes gpu/internal/rendertest/render_test.go | 6 +++--- internal/ops/reader.go | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/gpu/internal/rendertest/refs/TestDeferredPaint.png b/gpu/internal/rendertest/refs/TestDeferredPaint.png index b562f12ae570ac7289b82a8a01a6798be2c4fcc1..1ebcbae399ad5e3cec6eae9239d1dd062e595db2 100644 GIT binary patch literal 487 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU|i?v;uumf=gr-{zV93a94>yH zY+Yd*(9o&bcIkvh6PL%n8F>p@1?$arJwKwI-MpI9ZCY9U``3jZD{og>{pO1Q`2G!d zfga-#P6a=PLZ%L3hdB(7SOnA?cGT8<`uXj{V)LJy`yTFmJ4xDE7)^x*NK@WEPMNBm z^?QH6%a6PH|Mu+{cMM}B^7jAfU&skG1gr$r+yN1KoBb#3?VFFcUq9l3N+3%tQ$uBq=Pau?gLA2gcd||Lbn@ZYr;hj|OrWJYD@<);T3K F0RYUjr^)~T literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU}W`laSW-r_4aNcSA&9p>&2Ph z_CLQarn8pg{LgpFUy=-1%9aM*xqh|2?(bo~cfJfv4h$R&j0y}a4GcHj`Td!0A1EkV zd7HC=L4bh?CUqcvnm^OzZL5r>KYg-q^JAC~QjH`}UCx0b@pmhIkIgG8|8S*khqVMF w*l`f+8q{^>Td9hkw%Vwu)(CSqSc(A!%sEjgc;x$zopr0KPg*EdT%j diff --git a/gpu/internal/rendertest/render_test.go b/gpu/internal/rendertest/render_test.go index 524b88a2..f4beeb58 100644 --- a/gpu/internal/rendertest/render_test.go +++ b/gpu/internal/rendertest/render_test.go @@ -107,13 +107,13 @@ func TestDeferredPaint(t *testing.T) { run(t, func(o *op.Ops) { state := op.Save(o) clip.Rect(image.Rect(0, 0, 80, 80)).Op().Add(o) - paint.ColorOp{Color: color.NRGBA{A: 0xff, G: 0xff}}.Add(o) + paint.ColorOp{Color: color.NRGBA{A: 0x60, G: 0xff}}.Add(o) paint.PaintOp{}.Add(o) op.Affine(f32.Affine2D{}.Offset(f32.Pt(20, 20))).Add(o) m := op.Record(o) clip.Rect(image.Rect(0, 0, 80, 80)).Op().Add(o) - paint.ColorOp{Color: color.NRGBA{A: 0xff, R: 0xff, G: 0xff}}.Add(o) + paint.ColorOp{Color: color.NRGBA{A: 0x60, R: 0xff, G: 0xff}}.Add(o) paint.PaintOp{}.Add(o) paintMacro := m.Stop() op.Defer(o, paintMacro) @@ -121,7 +121,7 @@ func TestDeferredPaint(t *testing.T) { state.Load() op.Affine(f32.Affine2D{}.Offset(f32.Pt(10, 10))).Add(o) clip.Rect(image.Rect(0, 0, 80, 80)).Op().Add(o) - paint.ColorOp{Color: color.NRGBA{A: 0xff, B: 0xff}}.Add(o) + paint.ColorOp{Color: color.NRGBA{A: 0x60, B: 0xff}}.Add(o) paint.PaintOp{}.Add(o) }, func(r result) { }) diff --git a/internal/ops/reader.go b/internal/ops/reader.go index 146ffa63..402458da 100644 --- a/internal/ops/reader.go +++ b/internal/ops/reader.go @@ -134,6 +134,8 @@ func (r *Reader) Decode() (EncodedOp, bool) { } deferData := r.deferOps.Write1(t.Size(), refs[0]) copy(deferData, data) + r.pc.data += n + r.pc.refs += nrefs continue } var op macroOp