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