mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-04 00:45:35 +00:00
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