Merge branch 'real-wiimote-fixes'

This commit is contained in:
Rachel Bryk 2013-07-11 11:35:51 -04:00
commit 970cb4329f
4 changed files with 22 additions and 14 deletions

View File

@ -391,7 +391,7 @@ void EmuThread()
// Load and Init Wiimotes - only if we are booting in wii mode // Load and Init Wiimotes - only if we are booting in wii mode
if (g_CoreStartupParameter.bWii) 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" // Activate wiimotes which don't have source set to "None"
for (unsigned int i = 0; i != MAX_BBMOTES; ++i) for (unsigned int i = 0; i != MAX_BBMOTES; ++i)

View File

@ -38,7 +38,7 @@ void Shutdown()
} }
// if plugin isn't initialized, init and load config // if plugin isn't initialized, init and load config
void Initialize(void* const hwnd) void Initialize(void* const hwnd, bool wait)
{ {
// add 4 wiimotes // add 4 wiimotes
for (unsigned int i = WIIMOTE_CHAN_0; i<MAX_BBMOTES; ++i) for (unsigned int i = WIIMOTE_CHAN_0; i<MAX_BBMOTES; ++i)
@ -50,7 +50,7 @@ void Initialize(void* const hwnd)
g_plugin.LoadConfig(false); g_plugin.LoadConfig(false);
WiimoteReal::Initialize(); WiimoteReal::Initialize(wait);
// reload Wiimotes with our settings // reload Wiimotes with our settings
if (Movie::IsPlayingInput() || Movie::IsRecordingInput()) if (Movie::IsPlayingInput() || Movie::IsRecordingInput())

View File

@ -35,7 +35,7 @@ namespace Wiimote
{ {
void Shutdown(); void Shutdown();
void Initialize(void* const hwnd); void Initialize(void* const hwnd, bool wait = false);
void Resume(); void Resume();
void Pause(); void Pause();
@ -53,7 +53,7 @@ void Update(int _number);
namespace WiimoteReal namespace WiimoteReal
{ {
void Initialize(); void Initialize(bool wait = false);
void Shutdown(); void Shutdown();
void Resume(); void Resume();
void Pause(); void Pause();

View File

@ -299,6 +299,11 @@ void Wiimote::Update()
return; return;
} }
WiimoteEmu::Wiimote *const wm = (WiimoteEmu::Wiimote*)::Wiimote::GetPlugin()->controllers[index];
if (wm->Step())
return;
// Pop through the queued reports // Pop through the queued reports
const Report& rpt = ProcessReadQueue(); const Report& rpt = ProcessReadQueue();
@ -533,7 +538,7 @@ void LoadSettings()
} }
// config dialog calls this when some settings change // config dialog calls this when some settings change
void Initialize() void Initialize(bool wait)
{ {
if (SConfig::GetInstance().m_WiimoteContinuousScanning) if (SConfig::GetInstance().m_WiimoteContinuousScanning)
g_wiimote_scanner.StartScanning(); g_wiimote_scanner.StartScanning();
@ -546,16 +551,19 @@ void Initialize()
g_wiimote_scanner.WantBB(0 != CalculateWantedBB()); g_wiimote_scanner.WantBB(0 != CalculateWantedBB());
// wait for connection because it should exist before state load // wait for connection because it should exist before state load
int timeout = 100; if (wait)
std::vector<Wiimote*> found_wiimotes;
Wiimote* found_board = NULL;
g_wiimote_scanner.FindWiimotes(found_wiimotes, found_board);
if (SConfig::GetInstance().m_WiimoteContinuousScanning)
{ {
while(CalculateWantedWiimotes() && CalculateConnectedWiimotes() < found_wiimotes.size() && timeout) int timeout = 100;
std::vector<Wiimote*> found_wiimotes;
Wiimote* found_board = NULL;
g_wiimote_scanner.FindWiimotes(found_wiimotes, found_board);
if (SConfig::GetInstance().m_WiimoteContinuousScanning)
{ {
Common::SleepCurrentThread(100); while(CalculateWantedWiimotes() && CalculateConnectedWiimotes() < found_wiimotes.size() && timeout)
timeout--; {
Common::SleepCurrentThread(100);
timeout--;
}
} }
} }