ui/app: add Lock/Unlock to Context for macOS

Without locking, asynchronous OpenGL rendering crashes on macOS.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2019-05-24 14:01:26 +02:00
parent c3ea85801c
commit a1c0693eeb
8 changed files with 41 additions and 0 deletions
+2
View File
@@ -202,6 +202,7 @@ func (g *GPU) renderLoop(glctx gl.Context) error {
case <-g.refresh:
g.refreshErr <- glctx.MakeCurrent()
case frame := <-g.frames:
glctx.Lock()
if frame.collectStats && timers == nil && ctx.caps.EXT_disjoint_timer_query {
timers = newTimers(ctx)
zopsTimer = timers.newTimer()
@@ -253,6 +254,7 @@ func (g *GPU) renderLoop(glctx gl.Context) error {
res.summary = fmt.Sprintf("f:%7s zt:%7s st:%7s cov:%7s", ft, zt, st, covt)
}
res.err = err
glctx.Unlock()
g.results <- res
case <-g.stop:
break loop