From d4e242a59b96fc2324d43a9a1a9209447b320647 Mon Sep 17 00:00:00 2001 From: faiface <faiface@ksp.sk> Date: Thu, 24 Nov 2016 00:43:00 +0100 Subject: [PATCH] fix window switching --- window.go | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/window.go b/window.go index d725ebd..5ef584f 100644 --- a/window.go +++ b/window.go @@ -1,6 +1,8 @@ package pixel import ( + "sync" + "github.com/faiface/pixel/pixelgl" "github.com/go-gl/gl/v3.3-core/gl" "github.com/go-gl/glfw/v3.2/glfw" @@ -81,19 +83,24 @@ func (w *Window) Update() { w.End() } -var currentWindow *Window = nil +var ( + windowMutex sync.Mutex + currentWindow *Window +) func (w *Window) Begin() { - pixelgl.Do(func() { - if currentWindow != w { + needSwitch := pixelgl.DoVal(func() interface{} { + return currentWindow != w + }).(bool) + if needSwitch { + windowMutex.Lock() + pixelgl.Do(func() { w.window.MakeContextCurrent() pixelgl.Init() - currentWindow = w - } - }) - + }) + } } func (w *Window) End() { - // nothing really + windowMutex.Unlock() } -- GitLab