From 99ffe09b63e0d906cc1f502c24f4d2325e6cc09d Mon Sep 17 00:00:00 2001 From: Hajime Hoshi Date: Sat, 14 Sep 2024 17:08:21 +0900 Subject: [PATCH] internal/ui: bug fix: skip focus check for the first update --- internal/ui/ui_glfw.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/internal/ui/ui_glfw.go b/internal/ui/ui_glfw.go index 1b253618f..b3a47e03e 100644 --- a/internal/ui/ui_glfw.go +++ b/internal/ui/ui_glfw.go @@ -83,6 +83,7 @@ type userInterfaceImpl struct { // bufferOnceSwapped must be accessed from the main thread. bufferOnceSwapped bool + updateOnceCalled bool origWindowPosX int origWindowPosY int @@ -1276,6 +1277,10 @@ func (u *UserInterface) setFPSMode(fpsMode FPSModeType) error { // update must be called from the main thread. func (u *UserInterface) update() (float64, float64, error) { + defer func() { + u.updateOnceCalled = true + }() + if err := u.error(); err != nil { return 0, 0, err } @@ -1383,7 +1388,9 @@ func (u *UserInterface) update() (float64, float64, error) { } } - for !u.isRunnableOnUnfocused() { + // If isRunnableOnUnfocused is false and the window is not focused, wait here. + // For the first update, skip this check as the window might not be seen yet in some environments like ChromeOS (#3091). + for !u.isRunnableOnUnfocused() && u.updateOnceCalled { // In the initial state on macOS, the window is not shown (#2620). visible, err := u.window.GetAttrib(glfw.Visible) if err != nil {