app/headless: avoid race between ReleaseCurrent and MakeCurrent

Release context on MakeCurrent failure paths as well.

Fixes gio#144

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2020-07-04 17:37:02 +02:00
parent 30ad63283b
commit e2278b64c1
2 changed files with 8 additions and 3 deletions
+3 -2
View File
@@ -139,8 +139,9 @@ func contextDo(ctx context, f func() error) error {
errCh <- err errCh <- err
return return
} }
defer ctx.ReleaseCurrent() err := f()
errCh <- f() ctx.ReleaseCurrent()
errCh <- err
}() }()
return <-errCh return <-errCh
} }
+5 -1
View File
@@ -166,12 +166,16 @@ func (c *Context) MakeCurrent() error {
var err error var err error
c.srgbFBO, err = srgb.New(c.c) c.srgbFBO, err = srgb.New(c.c)
if err != nil { if err != nil {
c.ReleaseCurrent()
return err return err
} }
} }
if c.refreshFBO { if c.refreshFBO {
c.refreshFBO = false 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 return nil
} }