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
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)

View File

@ -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; i<MAX_BBMOTES; ++i)
@ -50,7 +50,7 @@ void Initialize(void* const hwnd)
g_plugin.LoadConfig(false);
WiimoteReal::Initialize();
WiimoteReal::Initialize(wait);
// reload Wiimotes with our settings
if (Movie::IsPlayingInput() || Movie::IsRecordingInput())

View File

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

View File

@ -299,6 +299,11 @@ void Wiimote::Update()
return;
}
WiimoteEmu::Wiimote *const wm = (WiimoteEmu::Wiimote*)::Wiimote::GetPlugin()->controllers[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<Wiimote*> 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<Wiimote*> 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--;
}
}
}