summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/input/input_dinput.cpp
diff options
context:
space:
mode:
author Brad Hughes <bradhugh@outlook.com>2016-03-18 22:57:16 -0400
committer Brad Hughes <bradhugh@outlook.com>2016-03-18 22:57:16 -0400
commit44a3589fd0d2fe628ea9adeb255bc5442a76c93a (patch)
tree65c11bbfe9634ba3c80945a63b01bd3b317365a2 /src/osd/modules/input/input_dinput.cpp
parentcadc351289a1460824c0a6cf66fa2026b0fd8c3d (diff)
Fix DirectInput stuck joystick directional input when window loses focus. The reset function for the device was overwriting the axis information previously obtained. Changed it to correctly only reset the state member.
Diffstat (limited to 'src/osd/modules/input/input_dinput.cpp')
-rw-r--r--src/osd/modules/input/input_dinput.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/osd/modules/input/input_dinput.cpp b/src/osd/modules/input/input_dinput.cpp
index bc4455c3900..6f581b0839a 100644
--- a/src/osd/modules/input/input_dinput.cpp
+++ b/src/osd/modules/input/input_dinput.cpp
@@ -147,7 +147,7 @@ public:
void reset() override
{
- memset(&keyboard, 0, sizeof(keyboard));
+ memset(&keyboard.state, 0, sizeof(keyboard.state));
}
};
@@ -232,7 +232,7 @@ public:
{
dinput_callback_context context = { this, &machine };
- HRESULT result = IDirectInput_EnumDevices(m_dinput, dinput_devclass(), enum_callback, &context, DIEDFL_ATTACHEDONLY);
+ HRESULT result = IDirectInput_EnumDevices(m_dinput.Get(), dinput_devclass(), enum_callback, &context, DIEDFL_ATTACHEDONLY);
if (result != DI_OK)
fatalerror("DirectInput: Unable to enumerate keyboards (result=%08X)\n", static_cast<UINT32>(result));
}
@@ -258,7 +258,7 @@ protected:
TDevice* devinfo = devicelist()->create_device<TDevice>(machine, utf8_instance_name.get(), *this);
// attempt to create a device
- result = IDirectInput_CreateDevice(m_dinput, WRAP_REFIID(instance->guidInstance), devinfo->dinput.device.GetAddressOf(), NULL);
+ result = IDirectInput_CreateDevice(m_dinput.Get(), WRAP_REFIID(instance->guidInstance), devinfo->dinput.device.GetAddressOf(), NULL);
if (result != DI_OK)
goto error;
@@ -510,7 +510,7 @@ public:
void reset() override
{
- memset(&joystick, 0, sizeof(joystick));
+ memset(&joystick.state, 0, sizeof(joystick.state));
}
void poll() override