From d175756707970532f7bb25358e7fca412b596c66 Mon Sep 17 00:00:00 2001 From: Astatin Date: Tue, 22 Jul 2025 21:25:45 +0200 Subject: Disconnect/reconnect gamepads during play --- src/desktop/input.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/desktop/input.rs b/src/desktop/input.rs index 55bbfb3..ed604e2 100644 --- a/src/desktop/input.rs +++ b/src/desktop/input.rs @@ -42,6 +42,18 @@ impl Gamepad { impl Input for Gamepad { fn update_events(&mut self, _cycles: u128) -> Option { + if let Some(gamepad_id) = self.gamepad_id { + if self.gilrs.connected_gamepad(gamepad_id).is_none() { + println!("Gamepad (id = {:?}) disconnected", gamepad_id); + self.gamepad_id = None; + } + } else { + if let Some((gamepad_id, _gamepad)) = self.gilrs.gamepads().next() { + println!("Found Gamepad id: {:?}", gamepad_id); + self.gamepad_id = Some(gamepad_id); + } + } + while let Some(_) = self.gilrs.next_event() {} None } -- cgit v1.2.3-70-g09d2