Fixed bug 2069 - Device addition/removal queries all USB devices rather than only HID devices.
authorSam Lantinga <slouken@libsdl.org>
Thu, 17 Oct 2013 23:40:13 -0700
changeset 7831 214cd9137ea9
parent 7830 722c44cad199
child 7832 e2188abb7c10
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
src/joystick/windows/SDL_dxjoystick_c.h
--- a/src/joystick/windows/SDL_dxjoystick.c	Thu Oct 17 23:15:27 2013 -0700
+++ b/src/joystick/windows/SDL_dxjoystick.c	Thu Oct 17 23:40:13 2013 -0700
@@ -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 @@
     };
 
     size_t iDevice;
-    SDL_bool retval = SDL_FALSE;
     UINT i;
 
     if (!s_bXInputEnabled) {
@@ -507,7 +508,7 @@
 
     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 )
--- a/src/joystick/windows/SDL_dxjoystick_c.h	Thu Oct 17 23:15:27 2013 -0700
+++ b/src/joystick/windows/SDL_dxjoystick_c.h	Thu Oct 17 23:40:13 2013 -0700
@@ -42,7 +42,7 @@
 #include <xinput.h>
 #include <devguid.h>
 #include <dbt.h>
-#include <xinput.h>
+
 
 #ifndef XUSER_MAX_COUNT
 #define XUSER_MAX_COUNT 4