forked from joejulian/gio
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:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user