diff --git a/pcsx2/USB/shared/rawinput_usb.cpp b/pcsx2/USB/shared/rawinput_usb.cpp index 80a6a9d7ae..90793882c8 100644 --- a/pcsx2/USB/shared/rawinput_usb.cpp +++ b/pcsx2/USB/shared/rawinput_usb.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include "../platcompat.h" extern HINSTANCE hInst; @@ -34,15 +35,18 @@ namespace shared HWND eatenWnd = nullptr; HHOOK hHook = nullptr, hHookWnd = nullptr, hHookKB = nullptr; bool skipInput = false; + std::mutex cb_mutex; void RegisterCallback(ParseRawInputCB* cb) { + std::scoped_lock lk(cb_mutex); if (cb && std::find(callbacks.begin(), callbacks.end(), cb) == callbacks.end()) callbacks.push_back(cb); } void UnregisterCallback(ParseRawInputCB* cb) { + std::scoped_lock lk(cb_mutex); auto it = std::find(callbacks.begin(), callbacks.end(), cb); if (it != callbacks.end()) callbacks.erase(it); @@ -189,6 +193,7 @@ namespace shared if (pRawInput->header.dwType == RIM_TYPEKEYBOARD) ToggleCursor(hWnd, pRawInput->data.keyboard); + std::lock_guard lk(cb_mutex); for (auto cb : callbacks) cb->ParseRawInput(pRawInput); } diff --git a/pcsx2/USB/usb-hid/raw/rawinput.cpp b/pcsx2/USB/usb-hid/raw/rawinput.cpp index 2f9e4d5516..27df5a59a9 100644 --- a/pcsx2/USB/usb-hid/raw/rawinput.cpp +++ b/pcsx2/USB/usb-hid/raw/rawinput.cpp @@ -182,13 +182,12 @@ namespace usb_hid static void ParseRawInputMS(RAWMOUSE& m, HIDState* hs) { - int b = 0, z = 0; + int z = 0; InputEvent ev{}; if (m.usButtonFlags & RI_MOUSE_WHEEL) z = (short)m.usButtonData / WHEEL_DELTA; - ev.type = INPUT_EVENT_KIND_BTN; if (m.ulButtons & RI_MOUSE_LEFT_BUTTON_DOWN) @@ -245,13 +244,13 @@ namespace usb_hid if (m.usFlags & MOUSE_MOVE_ABSOLUTE) { /*ev.type = INPUT_EVENT_KIND_ABS; - ev.u.abs.axis = INPUT_AXIS_X; - ev.u.abs.value = m.lLastX; - SendPointerEvent(ev, hs); + ev.u.abs.axis = INPUT_AXIS_X; + ev.u.abs.value = m.lLastX; + SendPointerEvent(ev, hs); - ev.u.abs.axis = INPUT_AXIS_Y; - ev.u.abs.value = m.lLastY; - SendPointerEvent(ev, hs);*/ + ev.u.abs.axis = INPUT_AXIS_Y; + ev.u.abs.value = m.lLastY; + SendPointerEvent(ev, hs);*/ } else { @@ -289,8 +288,8 @@ namespace usb_hid int RawInput::Close() { - Reset(); shared::rawinput::UnregisterCallback(this); + Reset(); return 0; }