7b4132f74b
`build_ui` (the GTK `activate` handler) started a fresh SDL3 gamepad worker thread on every reactivation of the already-running singleton (another --connect, the launcher clicked twice, ...). sdl3 only lets the first thread ever to call sdl3::init() hold "main thread" status, so every later activation's worker thread failed permanently with "Cannot initialize `Sdl` from a thread other than the main thread", silently disabling controller support for the rest of the process. Start the GamepadService once in run() and clone it into build_ui instead of starting a new one per activation. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>