From e456bef163c1b667ff5a045a4bda66b30326ae90 Mon Sep 17 00:00:00 2001 From: Filoppi Date: Wed, 24 May 2023 22:58:30 +0300 Subject: Input: Improve Controller Interface devices threading This specific issue was already addressed by https://github.com/dolphin-emu/dolphin/pull/11635 though I felt like there was something more we could do, and wasn't too happy with the likelihood of devices update calls being skipped (due to `m_devices_population_mutex` being locked). --- .../ControllerInterface/Wiimote/WiimoteController.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'Source/Core/InputCommon/ControllerInterface/Wiimote/WiimoteController.cpp') diff --git a/Source/Core/InputCommon/ControllerInterface/Wiimote/WiimoteController.cpp b/Source/Core/InputCommon/ControllerInterface/Wiimote/WiimoteController.cpp index 6b92bb9b16..bc2db53328 100644 --- a/Source/Core/InputCommon/ControllerInterface/Wiimote/WiimoteController.cpp +++ b/Source/Core/InputCommon/ControllerInterface/Wiimote/WiimoteController.cpp @@ -1395,14 +1395,10 @@ void Device::UpdateRumble() QueueReport(OutputReportRumble{}); } -void Device::UpdateInput() +Core::DeviceRemoval Device::UpdateInput() { if (!m_wiimote->IsConnected()) - { - g_controller_interface.RemoveDevice( - [this](const Core::Device* device) { return device == this; }); - return; - } + return Core::DeviceRemoval::Remove; UpdateRumble(); RunTasks(); @@ -1413,6 +1409,8 @@ void Device::UpdateInput() ProcessInputReport(report); RunTasks(); } + + return Core::DeviceRemoval::Keep; } void Device::MotionPlusState::ProcessData(const WiimoteEmu::MotionPlus::DataFormat& data) -- cgit v1.2.3