From 7ad441a37cb59d2db64d5ecf25e7a77b4f483856 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 17 Oct 2013 23:40:13 -0700 Subject: [PATCH] Fixed bug 2069 - Device addition/removal queries all USB devices rather than only HID devices. Andreas Ertelt SDL_dxjoystick.c is setting the classguid for device (dis)connect events to USB Devices in general: dbh.dbcc_classguid = GUID_DEVINTERFACE_USB_DEVICE; Wouldn't it make more sense to have it just subscribe to Hid device events? This would mean less meaningless events reaching the application. --- src/joystick/windows/SDL_dxjoystick.c | 5 +++-- src/joystick/windows/SDL_dxjoystick_c.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/joystick/windows/SDL_dxjoystick.c b/src/joystick/windows/SDL_dxjoystick.c index 54d54d26d..69393279e 100644 --- a/src/joystick/windows/SDL_dxjoystick.c +++ b/src/joystick/windows/SDL_dxjoystick.c @@ -53,6 +53,8 @@ #define DIDFT_OPTIONAL 0x80000000 #endif +DEFINE_GUID(GUID_DEVINTERFACE_HID, 0x4D1E55B2L, 0xF16F, 0x11CF, 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30); + #define INPUT_QSIZE 32 /* Buffer up to 32 input messages */ #define AXIS_MIN -32768 /* minimum value for axis coordinate */ @@ -387,7 +389,6 @@ SDL_IsXInputDevice( const GUID* pGuidProductFromDirectInput ) }; size_t iDevice; - SDL_bool retval = SDL_FALSE; UINT i; if (!s_bXInputEnabled) { @@ -507,7 +508,7 @@ SDL_JoystickThread(void *_data) dbh.dbcc_size = sizeof(dbh); dbh.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE; - dbh.dbcc_classguid = GUID_DEVINTERFACE_USB_DEVICE; + dbh.dbcc_classguid = GUID_DEVINTERFACE_HID; hNotify = RegisterDeviceNotification( messageWindow, &dbh, DEVICE_NOTIFY_WINDOW_HANDLE ); if ( !hNotify ) diff --git a/src/joystick/windows/SDL_dxjoystick_c.h b/src/joystick/windows/SDL_dxjoystick_c.h index 1b2717216..1a4703e5e 100644 --- a/src/joystick/windows/SDL_dxjoystick_c.h +++ b/src/joystick/windows/SDL_dxjoystick_c.h @@ -42,7 +42,7 @@ #include #include #include -#include + #ifndef XUSER_MAX_COUNT #define XUSER_MAX_COUNT 4