From 44a3589fd0d2fe628ea9adeb255bc5442a76c93a Mon Sep 17 00:00:00 2001 From: Brad Hughes Date: Fri, 18 Mar 2016 22:57:16 -0400 Subject: [PATCH] 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. --- src/osd/modules/input/input_dinput.cpp | 8 ++++---- 1 file 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(result)); } @@ -258,7 +258,7 @@ protected: TDevice* devinfo = devicelist()->create_device(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