diff --git a/gpu/internal/rendertest/render_test.go b/gpu/internal/rendertest/render_test.go index 027dfc61..524b88a2 100644 --- a/gpu/internal/rendertest/render_test.go +++ b/gpu/internal/rendertest/render_test.go @@ -340,6 +340,16 @@ func TestLinearGradientAngled(t *testing.T) { }, func(r result) {}) } +func TestZeroImage(t *testing.T) { + ops := new(op.Ops) + w := newWindow(t, 10, 10) + paint.ImageOp{}.Add(ops) + paint.PaintOp{}.Add(ops) + if err := w.Frame(ops); err != nil { + t.Error(err) + } +} + // lerp calculates linear interpolation with color b and p. func lerp(a, b f32color.RGBA, p float32) f32color.RGBA { return f32color.RGBA{ diff --git a/gpu/internal/rendertest/util_test.go b/gpu/internal/rendertest/util_test.go index 6c5b9731..092eed03 100644 --- a/gpu/internal/rendertest/util_test.go +++ b/gpu/internal/rendertest/util_test.go @@ -70,7 +70,7 @@ func drawImage(t *testing.T, size int, ops *op.Ops, draw func(o *op.Ops)) (im *i } func run(t *testing.T, f func(o *op.Ops), c func(r result)) { - // draw a few times and check that it is correct each time, to + // Draw a few times and check that it is correct each time, to // ensure any caching effects still generate the correct images. var img *image.RGBA var err error @@ -82,7 +82,7 @@ func run(t *testing.T, f func(o *op.Ops), c func(r result)) { t.Error("error rendering:", err) return } - // check for a reference image and make sure we are identical. + // Check for a reference image and make sure it is identical. if !verifyRef(t, img, 0) { name := fmt.Sprintf("%s-%d-bad.png", t.Name(), i) if err := saveImage(name, img); err != nil { diff --git a/op/paint/paint.go b/op/paint/paint.go index e36eca3e..a756f079 100644 --- a/op/paint/paint.go +++ b/op/paint/paint.go @@ -98,6 +98,8 @@ func (i ImageOp) Add(o *op.Ops) { Color: i.color, }.Add(o) return + } else if i.src == nil || i.src.Bounds().Empty() { + return } data := o.Write2(opconst.TypeImageLen, i.src, i.handle) data[0] = byte(opconst.TypeImage)