diff --git a/app/window.go b/app/window.go index 54f56b76..3953600d 100644 --- a/app/window.go +++ b/app/window.go @@ -142,11 +142,8 @@ func (w *Window) validateAndProcess(size image.Point, sync bool, frame *op.Ops, if w.gpu == nil && !w.nocontext { var err error if w.ctx == nil { - if w.ctx, err = w.driver.NewContext(); err != nil { - return err - } - if err = w.ctx.Lock(); err != nil { - w.destroyGPU() + w.ctx, err = w.driver.NewContext() + if err != nil { return err } sync = true @@ -166,6 +163,12 @@ func (w *Window) validateAndProcess(size image.Point, sync bool, frame *op.Ops, return err } } + if w.ctx != nil { + if err := w.ctx.Lock(); err != nil { + w.destroyGPU() + return err + } + } if w.gpu == nil && !w.nocontext { gpu, err := gpu.New(w.ctx.API()) if err != nil { @@ -197,6 +200,7 @@ func (w *Window) validateAndProcess(size image.Point, sync bool, frame *op.Ops, var err error if w.gpu != nil { err = w.ctx.Present() + w.ctx.Unlock() } return err }