internal/ui: a more robust fix for the unfocused-window loop

Depending on the member variable bufferOnceSwapped is a little fragile.
Detect whether the window is shown or not instead.

Updates #2620
This commit is contained in:
Hajime Hoshi 2023-04-01 03:35:43 +09:00
parent 2698c6f2c1
commit e41c2c79fe

View File

@ -1019,7 +1019,8 @@ func (u *userInterfaceImpl) update() (float64, float64, error) {
return 0, 0, err
}
for u.bufferOnceSwapped && !u.isRunnableOnUnfocused() && u.window.GetAttrib(glfw.Focused) == 0 && !u.window.ShouldClose() {
// In the initial state on macOS, the window is not shown (#2620).
for u.window.GetAttrib(glfw.Visible) != 0 && !u.isRunnableOnUnfocused() && u.window.GetAttrib(glfw.Focused) == 0 && !u.window.ShouldClose() {
if err := hooks.SuspendAudio(); err != nil {
return 0, 0, err
}