From: Bruno Jesus <00cpxxx@gmail.com> Subject: dinput: Fix device type dump (try 2) Message-Id: Date: Wed, 19 Nov 2014 23:30:08 -0200 Thanks to Michael Stefaniuc. try 2: Use a smarter way. Related to bug https://bugs.winehq.org/show_bug.cgi?id=35954 My joystick output: trace:dinput:_dump_DIDEVCAPS dwDevType: 00000214 DI8DEVTYPE_JOYSTICK diff --git a/dlls/dinput/joystick.c b/dlls/dinput/joystick.c index 0d61f57..edbb64e 100644 --- a/dlls/dinput/joystick.c +++ b/dlls/dinput/joystick.c @@ -400,16 +400,38 @@ HRESULT WINAPI JoystickAGenericImpl_SetProperty(LPDIRECTINPUTDEVICE8A iface, REF return JoystickWGenericImpl_SetProperty(IDirectInputDevice8W_from_impl(This), rguid, ph); } +#define DEBUG_TYPE(x) case (x): str = #x; break void _dump_DIDEVCAPS(const DIDEVCAPS *lpDIDevCaps) { + int type = GET_DIDEVICE_TYPE(lpDIDevCaps->dwDevType); + const char *str; TRACE("dwSize: %d\n", lpDIDevCaps->dwSize); TRACE("dwFlags: %08x\n", lpDIDevCaps->dwFlags); - TRACE("dwDevType: %08x %s\n", lpDIDevCaps->dwDevType, - lpDIDevCaps->dwDevType == DIDEVTYPE_DEVICE ? "DIDEVTYPE_DEVICE" : - lpDIDevCaps->dwDevType == DIDEVTYPE_MOUSE ? "DIDEVTYPE_MOUSE" : - lpDIDevCaps->dwDevType == DIDEVTYPE_KEYBOARD ? "DIDEVTYPE_KEYBOARD" : - lpDIDevCaps->dwDevType == DIDEVTYPE_JOYSTICK ? "DIDEVTYPE_JOYSTICK" : - lpDIDevCaps->dwDevType == DIDEVTYPE_HID ? "DIDEVTYPE_HID" : "UNKNOWN"); + switch(type) + { + /* Directx <= 7 definitions */ + DEBUG_TYPE(DIDEVTYPE_DEVICE); + DEBUG_TYPE(DIDEVTYPE_MOUSE); + DEBUG_TYPE(DIDEVTYPE_KEYBOARD); + DEBUG_TYPE(DIDEVTYPE_JOYSTICK); + DEBUG_TYPE(DIDEVTYPE_HID); + /* Directx >= 8 definitions */ + DEBUG_TYPE(DI8DEVTYPE_DEVICE); + DEBUG_TYPE(DI8DEVTYPE_MOUSE); + DEBUG_TYPE(DI8DEVTYPE_KEYBOARD); + DEBUG_TYPE(DI8DEVTYPE_JOYSTICK); + DEBUG_TYPE(DI8DEVTYPE_GAMEPAD); + DEBUG_TYPE(DI8DEVTYPE_DRIVING); + DEBUG_TYPE(DI8DEVTYPE_FLIGHT); + DEBUG_TYPE(DI8DEVTYPE_1STPERSON); + DEBUG_TYPE(DI8DEVTYPE_DEVICECTRL); + DEBUG_TYPE(DI8DEVTYPE_SCREENPOINTER); + DEBUG_TYPE(DI8DEVTYPE_REMOTE); + DEBUG_TYPE(DI8DEVTYPE_SUPPLEMENTAL); + default: str = "UNKNOWN"; + } + + TRACE("dwDevType: %08x %s\n", lpDIDevCaps->dwDevType, str); TRACE("dwAxes: %d\n", lpDIDevCaps->dwAxes); TRACE("dwButtons: %d\n", lpDIDevCaps->dwButtons); TRACE("dwPOVs: %d\n", lpDIDevCaps->dwPOVs); @@ -421,6 +443,7 @@ void _dump_DIDEVCAPS(const DIDEVCAPS *lpDIDevCaps) TRACE("dwFFDriverVersion: %d\n", lpDIDevCaps->dwFFDriverVersion); } } +#undef DEBUG_TYPE HRESULT WINAPI JoystickWGenericImpl_GetCapabilities(LPDIRECTINPUTDEVICE8W iface, LPDIDEVCAPS lpDIDevCaps) {