From 1c33dfc787419d156a5d097fba878f6d09f3c75f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Sun, 23 Jul 2017 15:50:33 +0800 Subject: [PATCH] Wiimote: Remove useless disconnections ChangeWiimoteSource does not need to disconnect a Wiimote if it isn't connected. --- Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp index f7b864035c..c3a54bdeb9 100644 --- a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp +++ b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp @@ -777,6 +777,7 @@ void Pause() void ChangeWiimoteSource(unsigned int index, int source) { + const int previous_source = g_wiimote_sources[index]; g_wiimote_sources[index] = source; { // kill real connection (or swap to different slot) @@ -796,9 +797,10 @@ void ChangeWiimoteSource(unsigned int index, int source) } // reconnect to the emulator - Core::RunAsCPUThread([index, source] { - ::Wiimote::Connect(index, false); - if (WIIMOTE_SRC_EMU & source) + Core::RunAsCPUThread([index, previous_source, source] { + if (previous_source != WIIMOTE_SRC_NONE) + ::Wiimote::Connect(index, false); + if (source & WIIMOTE_SRC_EMU) ::Wiimote::Connect(index, true); }); }