diff --git a/internal/ui/input_glfw.go b/internal/ui/input_glfw.go index 8e97424a4..256dd23ca 100644 --- a/internal/ui/input_glfw.go +++ b/internal/ui/input_glfw.go @@ -47,8 +47,16 @@ func (u *userInterfaceImpl) registerInputCallbacks() { })) } -// updateInput must be called from the main thread. func (u *userInterfaceImpl) updateInputState() error { + var err error + u.mainThread.Call(func() { + err = u.updateInputStateImpl() + }) + return err +} + +// updateInputStateImpl must be called from the main thread. +func (u *userInterfaceImpl) updateInputStateImpl() error { u.m.Lock() defer u.m.Unlock() diff --git a/internal/ui/input_nintendosdk.go b/internal/ui/input_nintendosdk.go index 00348baba..fcce036bb 100644 --- a/internal/ui/input_nintendosdk.go +++ b/internal/ui/input_nintendosdk.go @@ -30,18 +30,19 @@ import ( ) func (u *userInterfaceImpl) updateInputState() error { - var ferr error + var err error u.mainThread.Call(func() { - if err := gamepad.Update(); err != nil { - ferr = err - return - } - u.updateInputStateImpl() + err = u.updateInputStateImpl() }) - return ferr + return err } -func (u *userInterfaceImpl) updateInputStateImpl() { +// updateInputStateImpl must be called from the main thread. +func (u *userInterfaceImpl) updateInputStateImpl() error { + if err := gamepad.Update(); err != nil { + return err + } + C.ebitengine_UpdateTouches() u.nativeTouches = u.nativeTouches[:0] @@ -66,6 +67,8 @@ func (u *userInterfaceImpl) updateInputStateImpl() { Y: int(y), }) } + + return nil } func KeyName(key Key) string {