Преглед на файлове

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.
Sam Lantinga преди 12 години
родител
ревизия
7ad441a37c
променени са 2 файла, в които са добавени 4 реда и са изтрити 3 реда
  1. 3 2
      src/joystick/windows/SDL_dxjoystick.c
  2. 1 1
      src/joystick/windows/SDL_dxjoystick_c.h

+ 3 - 2
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 )

+ 1 - 1
src/joystick/windows/SDL_dxjoystick_c.h

@@ -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