gpu: don't panic for nil op.Ops argument to GPU.Frame

Updates gio#306

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2021-11-10 13:19:42 +01:00
parent 3f25a49c75
commit 5ddd572a41
4 changed files with 19 additions and 3 deletions
+5 -1
View File
@@ -1723,7 +1723,11 @@ func (c *collector) addClip(state *encoderState, viewport, bounds f32.Rectangle,
func (c *collector) collect(root *op.Ops, viewport image.Point, texOps *[]textureOp) {
fview := f32.Rectangle{Max: layout.FPt(viewport)}
c.reader.Reset(&root.Internal)
var intOps *ops.Ops
if root != nil {
intOps = &root.Internal
}
c.reader.Reset(intOps)
var state encoderState
reset := func() {
state = encoderState{
+5 -1
View File
@@ -800,7 +800,11 @@ func (d *drawOps) collect(root *op.Ops, viewport image.Point) {
viewf := f32.Rectangle{
Max: f32.Point{X: float32(viewport.X), Y: float32(viewport.Y)},
}
d.reader.Reset(&root.Internal)
var ops *ops.Ops
if root != nil {
ops = &root.Internal
}
d.reader.Reset(ops)
d.collectOps(&d.reader, viewf)
}
+1 -1
View File
@@ -55,7 +55,7 @@ func newContext() (context, error) {
if firstErr != nil {
return nil, firstErr
}
return nil, errors.New("x11: no available GPU backends")
return nil, errors.New("headless: no available GPU backends")
}
// NewWindow creates a new headless window.
+8
View File
@@ -132,6 +132,14 @@ func TestDepth(t *testing.T) {
}
}
func TestNoOps(t *testing.T) {
w, release := newTestWindow(t)
defer release()
if err := w.Frame(nil); err != nil {
t.Error(err)
}
}
func newTestWindow(t *testing.T) (*Window, func()) {
t.Helper()
sz := image.Point{X: 800, Y: 600}