Fix indefinite rumble on emulation pause
This commit is contained in:
parent
69addc680d
commit
d40ae9f569
|
@ -244,6 +244,17 @@ bool Init(std::unique_ptr<BootParameters> boot)
|
|||
return true;
|
||||
}
|
||||
|
||||
static void ResetRumble()
|
||||
{
|
||||
#if defined(__LIBUSB__)
|
||||
GCAdapter::ResetRumble();
|
||||
#endif
|
||||
#if defined(CIFACE_USE_XINPUT) || defined(CIFACE_USE_DINPUT)
|
||||
for (int i = 0; i < 4; ++i)
|
||||
Pad::ResetRumble(i);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Called from GUI thread
|
||||
void Stop() // - Hammertime!
|
||||
{
|
||||
|
@ -274,9 +285,8 @@ void Stop() // - Hammertime!
|
|||
|
||||
g_video_backend->Video_ExitLoop();
|
||||
}
|
||||
#if defined(__LIBUSB__)
|
||||
GCAdapter::ResetRumble();
|
||||
#endif
|
||||
|
||||
ResetRumble();
|
||||
|
||||
#ifdef USE_MEMORYWATCHER
|
||||
MemoryWatcher::Shutdown();
|
||||
|
@ -605,9 +615,7 @@ void SetState(State state)
|
|||
// stopped (including the CPU).
|
||||
CPU::EnableStepping(true); // Break
|
||||
Wiimote::Pause();
|
||||
#if defined(__LIBUSB__)
|
||||
GCAdapter::ResetRumble();
|
||||
#endif
|
||||
ResetRumble();
|
||||
break;
|
||||
case State::Running:
|
||||
CPU::EnableStepping(false);
|
||||
|
@ -726,9 +734,7 @@ static bool PauseAndLock(bool do_lock, bool unpause_on_unlock)
|
|||
// (s_efbAccessRequested).
|
||||
Fifo::PauseAndLock(do_lock, false);
|
||||
|
||||
#if defined(__LIBUSB__)
|
||||
GCAdapter::ResetRumble();
|
||||
#endif
|
||||
ResetRumble();
|
||||
|
||||
// CPU is unlocked last because CPU::PauseAndLock contains the synchronization
|
||||
// mechanism that prevents CPU::Break from racing.
|
||||
|
|
|
@ -60,6 +60,11 @@ void Rumble(const int pad_num, const ControlState strength)
|
|||
static_cast<GCPad*>(s_config.GetController(pad_num))->SetOutput(strength);
|
||||
}
|
||||
|
||||
void ResetRumble(const int pad_num)
|
||||
{
|
||||
static_cast<GCPad*>(s_config.GetController(pad_num))->SetOutput(0.0);
|
||||
}
|
||||
|
||||
bool GetMicButton(const int pad_num)
|
||||
{
|
||||
return static_cast<GCPad*>(s_config.GetController(pad_num))->GetMicButton();
|
||||
|
|
|
@ -27,6 +27,7 @@ InputConfig* GetConfig();
|
|||
GCPadStatus GetStatus(int pad_num);
|
||||
ControllerEmu::ControlGroup* GetGroup(int pad_num, PadGroup group);
|
||||
void Rumble(int pad_num, ControlState strength);
|
||||
void ResetRumble(int pad_num);
|
||||
|
||||
bool GetMicButton(int pad_num);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue