Merge pull request #3790 from mimimi085181/fix-xbox-one-rumble-test1

XInput: Apply Rumble/Motor output only on changes (again)
This commit is contained in:
Dolphin Bot 2016-04-23 21:59:06 +02:00
commit 21e56b5ce1
2 changed files with 9 additions and 4 deletions

View File

@ -124,8 +124,6 @@ void DeInit()
Device::Device(const XINPUT_CAPABILITIES& caps, u8 index)
: m_subtype(caps.SubType), m_index(index)
{
ZeroMemory(&m_state_out, sizeof(m_state_out));
// XInputGetCaps seems to always claim all capabilities are supported
// but I will leave all this stuff in, incase m$ fixes xinput up a bit
@ -213,7 +211,13 @@ void Device::UpdateInput()
void Device::UpdateMotors()
{
PXInputSetState(m_index, &m_state_out);
// this if statement is to make rumble work better when multiple ControllerInterfaces are using the device
// only calls XInputSetState if the state changed
if (memcmp(&m_state_out, &m_current_state_out, sizeof(m_state_out)))
{
m_current_state_out = m_state_out;
PXInputSetState(m_index, &m_state_out);
}
}
// GET name/source/id

View File

@ -90,7 +90,8 @@ public:
private:
XINPUT_STATE m_state_in;
XINPUT_VIBRATION m_state_out;
XINPUT_VIBRATION m_state_out{};
XINPUT_VIBRATION m_current_state_out{};
const BYTE m_subtype;
const u8 m_index;
};