// config dialog calls this when some settings change void Initialize(::Wiimote::InitializeMode init_mode) { if (!g_real_wiimotes_initialized) g_wiimote_scanner.StartThread(); if (SConfig::GetInstance().m_WiimoteContinuousScanning) g_wiimote_scanner.SetScanMode(WiimoteScanMode::CONTINUOUSLY_SCAN); else g_wiimote_scanner.SetScanMode(WiimoteScanMode::DO_NOT_SCAN); // wait for connection because it should exist before state load if (init_mode == ::Wiimote::InitializeMode::DO_WAIT_FOR_WIIMOTES) { int timeout = 100; g_wiimote_scanner.SetScanMode(WiimoteScanMode::SCAN_ONCE); while (CalculateWantedWiimotes() > CalculateConnectedWiimotes() && timeout) { Common::SleepCurrentThread(100); timeout--; } } if (g_real_wiimotes_initialized) return; NOTICE_LOG(WIIMOTE, "WiimoteReal::Initialize"); g_real_wiimotes_initialized = true; }
// config dialog calls this when some settings change void Initialize(bool wait) { if (SConfig::GetInstance().m_WiimoteContinuousScanning) g_wiimote_scanner.StartScanning(); else g_wiimote_scanner.StopScanning(); std::lock_guard<std::recursive_mutex> lk(g_refresh_lock); g_wiimote_scanner.WantWiimotes(0 != CalculateWantedWiimotes()); g_wiimote_scanner.WantBB(0 != CalculateWantedBB()); // wait for connection because it should exist before state load if (wait) { int timeout = 100; std::vector<Wiimote*> found_wiimotes; Wiimote* found_board = nullptr; g_wiimote_scanner.FindWiimotes(found_wiimotes, found_board); if (SConfig::GetInstance().m_WiimoteContinuousScanning) { while (CalculateWantedWiimotes() && CalculateConnectedWiimotes() < found_wiimotes.size() && timeout) { Common::SleepCurrentThread(100); timeout--; } } } if (g_real_wiimotes_initialized) return; NOTICE_LOG(WIIMOTE, "WiimoteReal::Initialize"); g_real_wiimotes_initialized = true; }