diff --git a/app/window.go b/app/window.go index 4127baac..a6c04abe 100644 --- a/app/window.go +++ b/app/window.go @@ -218,6 +218,12 @@ func (w *Window) run(opts *window.Options) { w.out <- system.DestroyEvent{Err: err} return } + defer func() { + if w.gpu != nil { + w.gpu.Release() + w.gpu = nil + } + }() for { var timer <-chan time.Time if w.delayedDraw != nil { @@ -297,8 +303,6 @@ func (w *Window) run(opts *window.Options) { } if e2.Sync { if err := w.gpu.Flush(); err != nil { - w.gpu.Release() - w.gpu = nil w.destroy(err) return }