From de7e6e01d43e8cf2ec193d74fa053b0d7949955f Mon Sep 17 00:00:00 2001 From: John Date: Sun, 18 Oct 2026 00:17:28 +0200 Subject: [PATCH] Revert [input_common/joycon] Enumerate SDL devices iff SDL signals change (#4486) (#4545) Due to causing the platform windows to crash when a controller is activated. - [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions). - [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md). - [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability. ------------------- Co-authored-by: Your Name Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4545 Reviewed-by: lizzie Reviewed-by: Maufeat --- src/input_common/drivers/joycon.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/input_common/drivers/joycon.cpp b/src/input_common/drivers/joycon.cpp index 047e7eb6d8..ded92d3f1d 100644 --- a/src/input_common/drivers/joycon.cpp +++ b/src/input_common/drivers/joycon.cpp @@ -83,21 +83,20 @@ void Joycons::ScanThread(std::stop_token stop_token) { constexpr u16 nintendo_vendor_id = 0x057e; Common::SetCurrentThreadName("JoyconScanThread"); - auto last_ret = 0u; do { - auto ret = SDL_hid_device_change_count(); - if (last_ret == 0u || last_ret != ret) { - last_ret = ret; - SDL_hid_device_info* devs = SDL_hid_enumerate(nintendo_vendor_id, 0x0); - for (auto* cur_dev = devs; cur_dev; cur_dev = cur_dev->next) { - if (IsDeviceNew(cur_dev)) { - LOG_DEBUG(Input, "Device Found,type : {:04X} {:04X}", cur_dev->vendor_id, cur_dev->product_id); - RegisterNewDevice(cur_dev); - } - cur_dev = cur_dev->next; + SDL_hid_device_info* devs = SDL_hid_enumerate(nintendo_vendor_id, 0x0); + SDL_hid_device_info* cur_dev = devs; + + while (cur_dev) { + if (IsDeviceNew(cur_dev)) { + LOG_DEBUG(Input, "Device Found,type : {:04X} {:04X}", cur_dev->vendor_id, + cur_dev->product_id); + RegisterNewDevice(cur_dev); } - SDL_hid_free_enumeration(devs); + cur_dev = cur_dev->next; } + + SDL_hid_free_enumeration(devs); } while (Common::StoppableTimedWait(stop_token, std::chrono::seconds{5})); }