Fixed detecting the Valve Streaming Gamepad
Fixed the GUID, and compare the contents of the GUID, not just the pointers
(cherry picked from commit 8df0baf6f5
)
This commit is contained in:
parent
62b181a4ef
commit
9efdac2761
1 changed files with 4 additions and 2 deletions
|
@ -96,11 +96,13 @@ bool JoypadWindows::have_device(const GUID &p_guid) {
|
||||||
|
|
||||||
// adapted from SDL2, works a lot better than the MSDN version
|
// adapted from SDL2, works a lot better than the MSDN version
|
||||||
bool JoypadWindows::is_xinput_device(const GUID *p_guid) {
|
bool JoypadWindows::is_xinput_device(const GUID *p_guid) {
|
||||||
static GUID IID_ValveStreamingGamepad = { MAKELONG(0x28DE, 0x11FF), 0x0000, 0x0000, { 0x00, 0x00, 0x50, 0x49, 0x44, 0x56, 0x49, 0x44 } };
|
static GUID IID_ValveStreamingGamepad = { MAKELONG(0x28DE, 0x11FF), 0x28DE, 0x0000, { 0x00, 0x00, 0x50, 0x49, 0x44, 0x56, 0x49, 0x44 } };
|
||||||
static GUID IID_X360WiredGamepad = { MAKELONG(0x045E, 0x02A1), 0x0000, 0x0000, { 0x00, 0x00, 0x50, 0x49, 0x44, 0x56, 0x49, 0x44 } };
|
static GUID IID_X360WiredGamepad = { MAKELONG(0x045E, 0x02A1), 0x0000, 0x0000, { 0x00, 0x00, 0x50, 0x49, 0x44, 0x56, 0x49, 0x44 } };
|
||||||
static GUID IID_X360WirelessGamepad = { MAKELONG(0x045E, 0x028E), 0x0000, 0x0000, { 0x00, 0x00, 0x50, 0x49, 0x44, 0x56, 0x49, 0x44 } };
|
static GUID IID_X360WirelessGamepad = { MAKELONG(0x045E, 0x028E), 0x0000, 0x0000, { 0x00, 0x00, 0x50, 0x49, 0x44, 0x56, 0x49, 0x44 } };
|
||||||
|
|
||||||
if (p_guid == &IID_ValveStreamingGamepad || p_guid == &IID_X360WiredGamepad || p_guid == &IID_X360WirelessGamepad)
|
if (memcmp(p_guid, &IID_ValveStreamingGamepad, sizeof(*p_guid)) == 0 ||
|
||||||
|
memcmp(p_guid, &IID_X360WiredGamepad, sizeof(*p_guid)) == 0 ||
|
||||||
|
memcmp(p_guid, &IID_X360WirelessGamepad, sizeof(*p_guid)) == 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
PRAWINPUTDEVICELIST dev_list = NULL;
|
PRAWINPUTDEVICELIST dev_list = NULL;
|
||||||
|
|
Loading…
Reference in a new issue