diff --git a/app/internal/wm/d3d11_windows.go b/app/internal/wm/d3d11_windows.go index d20b15c4..f048d018 100644 --- a/app/internal/wm/d3d11_windows.go +++ b/app/internal/wm/d3d11_windows.go @@ -117,6 +117,8 @@ func (c *d3d11Context) MakeCurrent() error { return nil } +func (c *d3d11Context) ReleaseCurrent() {} + func (c *d3d11Context) Lock() {} func (c *d3d11Context) Unlock() {} diff --git a/app/internal/wm/gl_ios.go b/app/internal/wm/gl_ios.go index 547b6641..4dd6e29e 100644 --- a/app/internal/wm/gl_ios.go +++ b/app/internal/wm/gl_ios.go @@ -139,6 +139,10 @@ func (c *context) MakeCurrent() error { return nil } +func (c *context) ReleaseCurrent() { + C.gio_makeCurrent(0) +} + func (w *window) NewContext() (Context, error) { return newContext(w) } diff --git a/app/internal/wm/gl_js.go b/app/internal/wm/gl_js.go index 74c21cce..7588dd68 100644 --- a/app/internal/wm/gl_js.go +++ b/app/internal/wm/gl_js.go @@ -62,6 +62,8 @@ func (c *context) MakeCurrent() error { return nil } +func (c *context) ReleaseCurrent() {} + func (w *window) NewContext() (Context, error) { return newContext(w) } diff --git a/app/internal/wm/gl_macos.go b/app/internal/wm/gl_macos.go index 2d5ae365..55cbc4e8 100644 --- a/app/internal/wm/gl_macos.go +++ b/app/internal/wm/gl_macos.go @@ -90,6 +90,10 @@ func (c *context) MakeCurrent() error { return nil } +func (c *context) ReleaseCurrent() { + C.gio_clearCurrentContext() +} + func (w *window) NewContext() (Context, error) { return newContext(w) } diff --git a/app/internal/wm/window.go b/app/internal/wm/window.go index 393168b6..058c2e1b 100644 --- a/app/internal/wm/window.go +++ b/app/internal/wm/window.go @@ -70,6 +70,7 @@ type Context interface { API() gpu.API Present() error MakeCurrent() error + ReleaseCurrent() Refresh() error Release() Lock() diff --git a/app/loop.go b/app/loop.go index 6881dee6..f8058181 100644 --- a/app/loop.go +++ b/app/loop.go @@ -69,6 +69,7 @@ func (l *renderLoop) renderLoop(ctx wm.Context) error { initErr <- err return } + defer ctx.ReleaseCurrent() g, err := gpu.New(ctx.API()) if err != nil { initErr <- err