Merge pull request #11635 from Dentomologist/wiimote_fix_disconnection_deadlock
ControllerInterface: Fix deadlock when Wii Remote disconnects
This commit is contained in:
commit
3783bedc25
|
@ -372,6 +372,14 @@ void ControllerInterface::UpdateInput()
|
||||||
|
|
||||||
// TODO: if we are an emulation input channel, we should probably always lock
|
// TODO: if we are an emulation input channel, we should probably always lock
|
||||||
// Prefer outdated values over blocking UI or CPU thread (avoids short but noticeable frame drop)
|
// Prefer outdated values over blocking UI or CPU thread (avoids short but noticeable frame drop)
|
||||||
|
|
||||||
|
// Lock this first to avoid deadlock with m_devices_mutex in certain cases (such as a Wii Remote
|
||||||
|
// getting disconnected)
|
||||||
|
if (!m_devices_population_mutex.try_lock())
|
||||||
|
return;
|
||||||
|
|
||||||
|
std::lock_guard population_lock(m_devices_population_mutex, std::adopt_lock);
|
||||||
|
|
||||||
if (!m_devices_mutex.try_lock())
|
if (!m_devices_mutex.try_lock())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue