diff options
author | 2016-03-18 22:57:16 -0400 | |
---|---|---|
committer | 2016-03-18 22:57:16 -0400 | |
commit | 44a3589fd0d2fe628ea9adeb255bc5442a76c93a (patch) | |
tree | 65c11bbfe9634ba3c80945a63b01bd3b317365a2 /src/osd/modules/input/input_dinput.cpp | |
parent | cadc351289a1460824c0a6cf66fa2026b0fd8c3d (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.cpp | 8 |
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 |