mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-08 02:45:38 +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
|
errCh <- err
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer ctx.ReleaseCurrent()
|
err := f()
|
||||||
errCh <- f()
|
ctx.ReleaseCurrent()
|
||||||
|
errCh <- err
|
||||||
}()
|
}()
|
||||||
return <-errCh
|
return <-errCh
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user