diff --git a/internal/ui/ui_glfw.go b/internal/ui/ui_glfw.go index 72f6af9c6..0e2e8e563 100644 --- a/internal/ui/ui_glfw.go +++ b/internal/ui/ui_glfw.go @@ -678,10 +678,6 @@ func (u *userInterfaceImpl) createWindow(width, height int) error { u.window.SetTitle(u.title) // Icons are set after every frame. They don't have to be cared here. - u.registerWindowSetSizeCallback() - u.registerWindowCloseCallback() - u.registerWindowFramebufferSizeCallback() - u.updateWindowSizeLimits() return nil @@ -924,6 +920,12 @@ func (u *userInterfaceImpl) init() error { gamepad.SetNativeWindow(u.nativeWindow()) + // Register callbacks after the window initialization done. + // The callback might cause swapping frames, that assumes the window is already set (#2137). + u.registerWindowSetSizeCallback() + u.registerWindowCloseCallback() + u.registerWindowFramebufferSizeCallback() + return nil }