diff --git a/app/headless/headless.go b/app/headless/headless.go index 9ba7ee67..67544664 100644 --- a/app/headless/headless.go +++ b/app/headless/headless.go @@ -139,8 +139,9 @@ func contextDo(ctx context, f func() error) error { errCh <- err return } - defer ctx.ReleaseCurrent() - errCh <- f() + err := f() + ctx.ReleaseCurrent() + errCh <- err }() return <-errCh } diff --git a/app/internal/egl/egl.go b/app/internal/egl/egl.go index 3314cb55..a70fe513 100644 --- a/app/internal/egl/egl.go +++ b/app/internal/egl/egl.go @@ -166,12 +166,16 @@ func (c *Context) MakeCurrent() error { var err error c.srgbFBO, err = srgb.New(c.c) if err != nil { + c.ReleaseCurrent() return err } } if c.refreshFBO { c.refreshFBO = false - return c.srgbFBO.Refresh(c.width, c.height) + if err := c.srgbFBO.Refresh(c.width, c.height); err != nil { + c.ReleaseCurrent() + return err + } } return nil }