diff --git a/Source/Core/Core/Src/Core.cpp b/Source/Core/Core/Src/Core.cpp index e3addf2f59..721bcbf3e3 100644 --- a/Source/Core/Core/Src/Core.cpp +++ b/Source/Core/Core/Src/Core.cpp @@ -391,7 +391,7 @@ void EmuThread() // Load and Init Wiimotes - only if we are booting in wii mode if (g_CoreStartupParameter.bWii) { - Wiimote::Initialize(g_pWindowHandle); + Wiimote::Initialize(g_pWindowHandle, !g_stateFileName.empty()); // Activate wiimotes which don't have source set to "None" for (unsigned int i = 0; i != MAX_BBMOTES; ++i) diff --git a/Source/Core/Core/Src/HW/Wiimote.cpp b/Source/Core/Core/Src/HW/Wiimote.cpp index 8cbe62dfcd..0bf10b343d 100644 --- a/Source/Core/Core/Src/HW/Wiimote.cpp +++ b/Source/Core/Core/Src/HW/Wiimote.cpp @@ -38,7 +38,7 @@ void Shutdown() } // if plugin isn't initialized, init and load config -void Initialize(void* const hwnd) +void Initialize(void* const hwnd, bool wait) { // add 4 wiimotes for (unsigned int i = WIIMOTE_CHAN_0; icontrollers[index]; + + if (wm->Step()) + return; + // Pop through the queued reports const Report& rpt = ProcessReadQueue(); @@ -533,7 +538,7 @@ void LoadSettings() } // config dialog calls this when some settings change -void Initialize() +void Initialize(bool wait) { if (SConfig::GetInstance().m_WiimoteContinuousScanning) g_wiimote_scanner.StartScanning(); @@ -546,16 +551,19 @@ void Initialize() g_wiimote_scanner.WantBB(0 != CalculateWantedBB()); // wait for connection because it should exist before state load - int timeout = 100; - std::vector found_wiimotes; - Wiimote* found_board = NULL; - g_wiimote_scanner.FindWiimotes(found_wiimotes, found_board); - if (SConfig::GetInstance().m_WiimoteContinuousScanning) + if (wait) { - while(CalculateWantedWiimotes() && CalculateConnectedWiimotes() < found_wiimotes.size() && timeout) + int timeout = 100; + std::vector found_wiimotes; + Wiimote* found_board = NULL; + g_wiimote_scanner.FindWiimotes(found_wiimotes, found_board); + if (SConfig::GetInstance().m_WiimoteContinuousScanning) { - Common::SleepCurrentThread(100); - timeout--; + while(CalculateWantedWiimotes() && CalculateConnectedWiimotes() < found_wiimotes.size() && timeout) + { + Common::SleepCurrentThread(100); + timeout--; + } } }