Fix DInput rumble.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7347 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
c83e5ee35b
commit
3454ade05e
|
@ -306,7 +306,7 @@ Joystick::Joystick( /*const LPCDIDEVICEINSTANCE lpddi, */const LPDIRECTINPUTDEVI
|
||||||
//ZeroMemory(&env, sizeof(env));
|
//ZeroMemory(&env, sizeof(env));
|
||||||
//env.dwSize = sizeof(env);
|
//env.dwSize = sizeof(env);
|
||||||
|
|
||||||
for (unsigned int f = 0, i = 0; f < sizeof(force_type_names)/sizeof(*force_type_names); ++f)
|
for (unsigned int f = 0; f < sizeof(force_type_names)/sizeof(*force_type_names); ++f)
|
||||||
{
|
{
|
||||||
// ugly if ladder
|
// ugly if ladder
|
||||||
if (0 == f)
|
if (0 == f)
|
||||||
|
@ -319,16 +319,15 @@ Joystick::Joystick( /*const LPCDIDEVICEINSTANCE lpddi, */const LPDIRECTINPUTDEVI
|
||||||
LPDIRECTINPUTEFFECT pEffect;
|
LPDIRECTINPUTEFFECT pEffect;
|
||||||
if (SUCCEEDED(m_device->CreateEffect(force_type_names[f].guid, &eff, &pEffect, NULL)))
|
if (SUCCEEDED(m_device->CreateEffect(force_type_names[f].guid, &eff, &pEffect, NULL)))
|
||||||
{
|
{
|
||||||
|
m_state_out.push_back(EffectState(pEffect));
|
||||||
|
|
||||||
// ugly if ladder again :/
|
// ugly if ladder again :/
|
||||||
if (0 == f)
|
if (0 == f)
|
||||||
AddOutput(new ForceConstant(f, m_state_out[i]));
|
AddOutput(new ForceConstant(f, m_state_out.back()));
|
||||||
else if (1 == f)
|
else if (1 == f)
|
||||||
AddOutput(new ForceRamp(f, m_state_out[i]));
|
AddOutput(new ForceRamp(f, m_state_out.back()));
|
||||||
else
|
else
|
||||||
AddOutput(new ForcePeriodic(f, m_state_out[i]));
|
AddOutput(new ForcePeriodic(f, m_state_out.back()));
|
||||||
|
|
||||||
++i;
|
|
||||||
m_state_out.push_back(EffectState(pEffect));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -351,7 +350,7 @@ Joystick::Joystick( /*const LPCDIDEVICEINSTANCE lpddi, */const LPDIRECTINPUTDEVI
|
||||||
Joystick::~Joystick()
|
Joystick::~Joystick()
|
||||||
{
|
{
|
||||||
// release the ff effect iface's
|
// release the ff effect iface's
|
||||||
std::vector<EffectState>::iterator
|
std::list<EffectState>::iterator
|
||||||
i = m_state_out.begin(),
|
i = m_state_out.begin(),
|
||||||
e = m_state_out.end();
|
e = m_state_out.end();
|
||||||
for (; i!=e; ++i)
|
for (; i!=e; ++i)
|
||||||
|
@ -439,7 +438,7 @@ bool Joystick::UpdateOutput()
|
||||||
eff.dwSize = sizeof(DIEFFECT);
|
eff.dwSize = sizeof(DIEFFECT);
|
||||||
eff.dwFlags = DIEFF_CARTESIAN | DIEFF_OBJECTOFFSETS;
|
eff.dwFlags = DIEFF_CARTESIAN | DIEFF_OBJECTOFFSETS;
|
||||||
|
|
||||||
std::vector<EffectState>::iterator
|
std::list<EffectState>::iterator
|
||||||
i = m_state_out.begin(),
|
i = m_state_out.begin(),
|
||||||
e = m_state_out.end();
|
e = m_state_out.end();
|
||||||
for (; i!=e; ++i)
|
for (; i!=e; ++i)
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#include <dinput.h>
|
#include <dinput.h>
|
||||||
|
|
||||||
|
#include <list>
|
||||||
|
|
||||||
#ifdef CIFACE_USE_XINPUT
|
#ifdef CIFACE_USE_XINPUT
|
||||||
// this takes so long, idk if it should be enabled :(
|
// this takes so long, idk if it should be enabled :(
|
||||||
#define NO_DUPLICATE_DINPUT_XINPUT
|
#define NO_DUPLICATE_DINPUT_XINPUT
|
||||||
|
@ -102,10 +104,10 @@ private:
|
||||||
const LPDIRECTINPUTDEVICE8 m_device;
|
const LPDIRECTINPUTDEVICE8 m_device;
|
||||||
const unsigned int m_index;
|
const unsigned int m_index;
|
||||||
|
|
||||||
DIJOYSTATE m_state_in;
|
DIJOYSTATE m_state_in;
|
||||||
std::vector<EffectState> m_state_out;
|
std::list<EffectState> m_state_out;
|
||||||
|
|
||||||
bool m_buffered;
|
bool m_buffered;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue