diff options
Diffstat (limited to 'dinput/win32-joystick.cpp')
-rw-r--r-- | dinput/win32-joystick.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/dinput/win32-joystick.cpp b/dinput/win32-joystick.cpp index 0f2687fe..06c1f89f 100644 --- a/dinput/win32-joystick.cpp +++ b/dinput/win32-joystick.cpp @@ -1,7 +1,7 @@ #ifdef _WIN32 #include "win32-joystick.hpp" -#include "compat/macros.hpp" +#include "compat/macros.h" #include <cstddef> #include <algorithm> @@ -11,13 +11,13 @@ #include <QWidget> #include <QDebug> +#include <dinput.h> #include <objbase.h> namespace win32_joy_impl { QMutex win32_joy_ctx::enum_state::mtx; win32_joy_ctx::enum_state win32_joy_ctx::enumerator; -DIDEVICEOBJECTDATA win32_joy_ctx::joy::keystate_buffers[num_buffers] = {}; void win32_joy_ctx::poll(fn const& f) { @@ -48,7 +48,7 @@ bool win32_joy_ctx::poll_axis(const QString &guid, int* axes) auto& j = iter->second; auto& joy_handle = j->joy_handle; - DIJOYSTATE2 js = {}; + DIJOYSTATE2 js; if (!di_t::poll_device(joy_handle)) continue; @@ -142,6 +142,8 @@ bool win32_joy_ctx::joy::poll(fn const& f) return false; } + DIDEVICEOBJECTDATA keystate_buffers[num_buffers]; + DWORD sz = num_buffers; if (FAILED(hr = joy_handle->GetDeviceData(sizeof(DIDEVICEOBJECTDATA), keystate_buffers, &sz, 0))) { @@ -226,6 +228,9 @@ win32_joy_ctx::enum_state::~enum_state() void win32_joy_ctx::enum_state::refresh() { all.clear(); +#ifdef __SANITIZE_ADDRESS__ + return; +#endif if (!di) { @@ -255,7 +260,7 @@ void win32_joy_ctx::enum_state::refresh() const win32_joy_ctx::joys_t& win32_joy_ctx::enum_state::get_joys() const { return joys; } -BOOL CALLBACK win32_joy_ctx::enum_state::EnumJoysticksCallback(const DIDEVICEINSTANCE *pdidInstance, void *pContext) +BOOL CALLBACK win32_joy_ctx::enum_state::EnumJoysticksCallback(const DIDEVICEINSTANCEA *pdidInstance, void *pContext) { enum_state& state = *reinterpret_cast<enum_state*>(pContext); const QString guid = guid_to_string(pdidInstance->guidInstance); @@ -270,7 +275,7 @@ BOOL CALLBACK win32_joy_ctx::enum_state::EnumJoysticksCallback(const DIDEVICEINS { HRESULT hr; - LPDIRECTINPUTDEVICE8 h; + IDirectInputDevice8A* h; if (FAILED(hr = state.di->CreateDevice(pdidInstance->guidInstance, &h, nullptr))) { qDebug() << "dinput: failed joystick CreateDevice" << guid << (void*)hr; @@ -322,7 +327,7 @@ end: return DIENUM_CONTINUE; } -BOOL CALLBACK win32_joy_ctx::enum_state::EnumObjectsCallback(const DIDEVICEOBJECTINSTANCE *pdidoi, void *ctx) +BOOL CALLBACK win32_joy_ctx::enum_state::EnumObjectsCallback(const DIDEVICEOBJECTINSTANCEA* pdidoi, void *ctx) { if (pdidoi->dwType & DIDFT_AXIS) { @@ -336,7 +341,7 @@ BOOL CALLBACK win32_joy_ctx::enum_state::EnumObjectsCallback(const DIDEVICEOBJEC HRESULT hr; - if (FAILED(hr = reinterpret_cast<LPDIRECTINPUTDEVICE8>(ctx)->SetProperty(DIPROP_RANGE, &diprg.diph))) + if (FAILED(hr = reinterpret_cast<IDirectInputDevice8A*>(ctx)->SetProperty(DIPROP_RANGE, &diprg.diph))) { qDebug() << "dinput: failed joystick DIPROP_RANGE" << (void*)hr; return DIENUM_STOP; @@ -346,7 +351,7 @@ BOOL CALLBACK win32_joy_ctx::enum_state::EnumObjectsCallback(const DIDEVICEOBJEC return DIENUM_CONTINUE; } -win32_joy_ctx::joy::joy(LPDIRECTINPUTDEVICE8 handle, const QString& guid, const QString &name) +win32_joy_ctx::joy::joy(IDirectInputDevice8A* handle, const QString& guid, const QString &name) : joy_handle(handle), guid(guid), name(name) { //qDebug() << "make joy" << guid << name << joy_handle; |