From 83b29f9ce1fe6caa06769544c3b5f6c10ea97a0f Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 19 Dec 2022 09:14:04 -0800
Subject: [PATCH] Don't send Razer devices the Sony third-party query feature
report
Some of them lock up or reset, and the vast majority of devices are not actually game controllers.
Fixes https://github.com/libsdl-org/SDL/issues/6733
---
src/joystick/SDL_joystick.c | 1 -
src/joystick/usb_ids.h | 6 +++++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/joystick/SDL_joystick.c b/src/joystick/SDL_joystick.c
index 4e57ac892f8a..841569acc074 100644
--- a/src/joystick/SDL_joystick.c
+++ b/src/joystick/SDL_joystick.c
@@ -2637,7 +2637,6 @@ SDL_bool SDL_ShouldIgnoreJoystick(const char *name, SDL_JoystickGUID guid)
MAKE_VIDPID(0x04d9, 0x8009), /* OBINLB USB-HID Keyboard (Anne Pro II) */
MAKE_VIDPID(0x04d9, 0xa292), /* OBINLB USB-HID Keyboard (Anne Pro II) */
MAKE_VIDPID(0x04d9, 0xa293), /* OBINLB USB-HID Keyboard (Anne Pro II) */
- MAKE_VIDPID(0x1532, 0x0226), /* Razer Huntsman Elite */
MAKE_VIDPID(0x1532, 0x0266), /* Razer Huntsman V2 Analog, non-functional DInput device */
MAKE_VIDPID(0x1532, 0x0282), /* Razer Huntsman Mini Analog, non-functional DInput device */
MAKE_VIDPID(0x26ce, 0x01a2), /* ASRock LED Controller */
diff --git a/src/joystick/usb_ids.h b/src/joystick/usb_ids.h
index 2ae2f9606319..5a6a8e4d22fb 100644
--- a/src/joystick/usb_ids.h
+++ b/src/joystick/usb_ids.h
@@ -49,6 +49,11 @@
#define USB_VENDOR_VALVE 0x28de
#define USB_VENDOR_ZEROPLUS 0x0c12
+// Most Razer devices are not game controllers, and some of them lock up or reset
+// when we send them the Sony third-party query feature report, so don't include that
+// vendor here. Instead add devices as appropriate to controller_type.c
+// Reference: https://github.com/libsdl-org/SDL/issues/6733
+// https://github.com/libsdl-org/SDL/issues/6799
#define SONY_THIRDPARTY_VENDOR(X) \
(X == USB_VENDOR_DRAGONRISE || \
X == USB_VENDOR_HORI || \
@@ -59,7 +64,6 @@
X == USB_VENDOR_POWERA || \
X == USB_VENDOR_POWERA_ALT || \
X == USB_VENDOR_QANBA || \
- X == USB_VENDOR_RAZER || \
X == USB_VENDOR_SHANWAN || \
X == USB_VENDOR_SHANWAN_ALT || \
X == USB_VENDOR_THRUSTMASTER || \