mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-06 01:45:36 +00:00
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:
+5
-1
@@ -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) {
|
func (c *collector) collect(root *op.Ops, viewport image.Point, texOps *[]textureOp) {
|
||||||
fview := f32.Rectangle{Max: layout.FPt(viewport)}
|
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
|
var state encoderState
|
||||||
reset := func() {
|
reset := func() {
|
||||||
state = encoderState{
|
state = encoderState{
|
||||||
|
|||||||
+5
-1
@@ -800,7 +800,11 @@ func (d *drawOps) collect(root *op.Ops, viewport image.Point) {
|
|||||||
viewf := f32.Rectangle{
|
viewf := f32.Rectangle{
|
||||||
Max: f32.Point{X: float32(viewport.X), Y: float32(viewport.Y)},
|
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)
|
d.collectOps(&d.reader, viewf)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ func newContext() (context, error) {
|
|||||||
if firstErr != nil {
|
if firstErr != nil {
|
||||||
return nil, firstErr
|
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.
|
// NewWindow creates a new headless window.
|
||||||
|
|||||||
@@ -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()) {
|
func newTestWindow(t *testing.T) (*Window, func()) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
sz := image.Point{X: 800, Y: 600}
|
sz := image.Point{X: 800, Y: 600}
|
||||||
|
|||||||
Reference in New Issue
Block a user