diff --git a/internal/ui/ui_glfw.go b/internal/ui/ui_glfw.go index be9b5834a..c7b2a59ce 100644 --- a/internal/ui/ui_glfw.go +++ b/internal/ui/ui_glfw.go @@ -46,14 +46,6 @@ func CurrentUI() UserInterface { var glContext *opengl.Context func GLContext() *opengl.Context { - if glContext != nil { - return glContext - } - var err error - glContext, err = opengl.NewContext(currentUI.runOnMainThread) - if err != nil { - panic(err) - } return glContext } @@ -145,6 +137,13 @@ func (u *userInterface) ScreenScale() float64 { } func (u *userInterface) Start(width, height int, scale float64, title string) error { + // GLContext must be created before setting the screen size, which requres + // swapping buffers. + var err error + glContext, err = opengl.NewContext(currentUI.runOnMainThread) + if err != nil { + return err + } if err := u.runOnMainThread(func() error { m := glfw.GetPrimaryMonitor() v := m.GetVideoMode() diff --git a/internal/ui/ui_js.go b/internal/ui/ui_js.go index 811e60021..7ddcc0119 100644 --- a/internal/ui/ui_js.go +++ b/internal/ui/ui_js.go @@ -139,14 +139,6 @@ func touchEventToTouches(e *js.Object) []touch { var glContext *opengl.Context func GLContext() *opengl.Context { - if glContext != nil { - return glContext - } - var err error - glContext, err = opengl.NewContext() - if err != nil { - panic(err) - } return glContext } @@ -301,6 +293,11 @@ func (u *userInterface) Start(width, height int, scale float64, title string) er doc.Set("title", title) u.setScreenSize(width, height, scale) canvas.Call("focus") + var err error + glContext, err = opengl.NewContext() + if err != nil { + return err + } return nil } diff --git a/internal/ui/ui_mobile.go b/internal/ui/ui_mobile.go index 47b63a5c2..8e39e3c54 100644 --- a/internal/ui/ui_mobile.go +++ b/internal/ui/ui_mobile.go @@ -27,14 +27,6 @@ import ( var glContext *opengl.Context func GLContext() *opengl.Context { - if glContext != nil { - return glContext - } - var err error - glContext, err = opengl.NewContext() - if err != nil { - panic(err) - } return glContext } @@ -83,6 +75,11 @@ func (u *userInterface) Start(width, height int, scale float64, title string) er u.height = height u.scale = scale // title is ignored? + var err error + glContext, err = opengl.NewContext() + if err != nil { + return err + } return nil }