diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2022-09-07 22:37:14 +0200 |
|---|---|---|
| committer | Admiral H. Curtiss <pikachu025@gmail.com> | 2022-09-07 22:37:24 +0200 |
| commit | b8ca1b2907230f2e1285bfdb9c5e3b373d49cf56 (patch) | |
| tree | b8af6b32f56169d2c6ef4ce8670407af6538adce /Source/Core/InputCommon | |
| parent | 48c9c224cf9f82f0f9f2690b7cc6283d7448480c (diff) | |
InputCommon: Fix deadlock in EmulatedController::UpdateReferences().
Diffstat (limited to 'Source/Core/InputCommon')
| -rw-r--r-- | Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp | 2 | ||||
| -rw-r--r-- | Source/Core/InputCommon/ControllerInterface/CoreDevice.h | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp b/Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp index 7aec56115c..0a3de3e391 100644 --- a/Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp +++ b/Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp @@ -40,7 +40,7 @@ std::unique_lock<std::recursive_mutex> EmulatedController::GetStateLock() void EmulatedController::UpdateReferences(const ControllerInterface& devi) { - const auto lock = GetStateLock(); + std::scoped_lock lk(s_get_state_mutex, devi.GetDevicesMutex()); m_default_device_is_connected = devi.HasConnectedDevice(m_default_device); diff --git a/Source/Core/InputCommon/ControllerInterface/CoreDevice.h b/Source/Core/InputCommon/ControllerInterface/CoreDevice.h index 227a1febbe..2280ddac3b 100644 --- a/Source/Core/InputCommon/ControllerInterface/CoreDevice.h +++ b/Source/Core/InputCommon/ControllerInterface/CoreDevice.h @@ -238,6 +238,8 @@ public: std::chrono::milliseconds confirmation_wait, std::chrono::milliseconds maximum_wait) const; + std::recursive_mutex& GetDevicesMutex() const { return m_devices_mutex; } + protected: // Exclusively needed when reading/writing "m_devices" mutable std::recursive_mutex m_devices_mutex; |
