From 809b4a2cf9511eb203a74d86a466e69b46c22f05 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Thu, 28 Nov 2019 15:14:45 +0100 Subject: [PATCH] app/internal/gpu: don't release the context when New fails Signed-off-by: Elias Naur --- app/internal/gpu/gpu.go | 4 ++-- app/window.go | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/internal/gpu/gpu.go b/app/internal/gpu/gpu.go index 6bc66b01..61349f42 100644 --- a/app/internal/gpu/gpu.go +++ b/app/internal/gpu/gpu.go @@ -267,7 +267,6 @@ func (g *GPU) renderLoop(glctx gl.Context) error { runtime.LockOSThread() // Don't UnlockOSThread to avoid reuse by the Go runtime. defer close(g.stopped) - defer glctx.Release() if err := glctx.MakeCurrent(); err != nil { initErr <- err @@ -278,13 +277,14 @@ func (g *GPU) renderLoop(glctx gl.Context) error { initErr <- err return } + initErr <- nil + defer glctx.Release() defer g.cache.release(ctx) defer g.pathCache.release(ctx) r := newRenderer(ctx) defer r.release() var timers *timers var zopsTimer, stencilTimer, coverTimer, cleanupTimer *timer - initErr <- nil var drawOps drawOps loop: for { diff --git a/app/window.go b/app/window.go index bd4fa2a7..1d30dc6d 100644 --- a/app/window.go +++ b/app/window.go @@ -290,6 +290,9 @@ func (w *Window) run(opts *window.Options) { ctx, err = w.driver.NewContext() if err == nil { w.gpu, err = gpu.New(ctx) + if err != nil { + ctx.Release() + } } } var frame *op.Ops