mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-13 15:59:23 +01:00
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:
commit
21e56b5ce1
@ -124,8 +124,6 @@ void DeInit()
|
|||||||
Device::Device(const XINPUT_CAPABILITIES& caps, u8 index)
|
Device::Device(const XINPUT_CAPABILITIES& caps, u8 index)
|
||||||
: m_subtype(caps.SubType), m_index(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
|
// XInputGetCaps seems to always claim all capabilities are supported
|
||||||
// but I will leave all this stuff in, incase m$ fixes xinput up a bit
|
// 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()
|
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
|
// GET name/source/id
|
||||||
|
@ -90,7 +90,8 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
XINPUT_STATE m_state_in;
|
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 BYTE m_subtype;
|
||||||
const u8 m_index;
|
const u8 m_index;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user