static HRESULT joydev_enum_deviceA(DWORD dwDevType, DWORD dwFlags, LPDIDEVICEINSTANCEA lpddi, DWORD version, int id) { int fd = -1; if (id >= find_joystick_devices()) return E_FAIL; if (dwFlags & DIEDFL_FORCEFEEDBACK) { WARN("force feedback not supported\n"); return S_FALSE; } if ((dwDevType == 0) || ((dwDevType == DIDEVTYPE_JOYSTICK) && (version > 0x0300 && version < 0x0800)) || (((dwDevType == DI8DEVCLASS_GAMECTRL) || (dwDevType == DI8DEVTYPE_JOYSTICK)) && (version >= 0x0800))) { /* check whether we have a joystick */ if ((fd = open(joystick_devices[id].device, O_RDONLY)) < 0) { WARN("open(%s, O_RDONLY) failed: %s\n", joystick_devices[id].name, strerror(errno)); return S_FALSE; } fill_joystick_dideviceinstanceA( lpddi, version, id ); close(fd); TRACE("Enumerating the linux Joystick device: %s (%s)\n", joystick_devices[id].device, lpddi->tszProductName); return S_OK; } return S_FALSE; }
/****************************************************************************** * GetDeviceInfo : get information about a device's identity */ static HRESULT WINAPI JoystickLinuxAImpl_GetDeviceInfo(LPDIRECTINPUTDEVICE8A iface, LPDIDEVICEINSTANCEA ddi) { JoystickImpl *This = impl_from_IDirectInputDevice8A(iface); TRACE("(%p) %p\n", This, ddi); if (ddi == NULL) return E_POINTER; if ((ddi->dwSize != sizeof(DIDEVICEINSTANCE_DX3A)) && (ddi->dwSize != sizeof(DIDEVICEINSTANCEA))) return DIERR_INVALIDPARAM; fill_joystick_dideviceinstanceA( ddi, This->generic.base.dinput->dwVersion, get_joystick_index(&This->generic.base.guid) ); return DI_OK; }
static BOOL joydev_enum_deviceA(DWORD dwDevType, DWORD dwFlags, LPDIDEVICEINSTANCEA lpddi, DWORD version, int id) { find_joydevs(); if (id >= have_joydevs) { return FALSE; } if (!((dwDevType == 0) || ((dwDevType == DIDEVTYPE_JOYSTICK) && (version > 0x0300 && version < 0x0800)) || (((dwDevType == DI8DEVCLASS_GAMECTRL) || (dwDevType == DI8DEVTYPE_JOYSTICK)) && (version >= 0x0800)))) return FALSE; #ifndef HAVE_STRUCT_FF_EFFECT_DIRECTION if (dwFlags & DIEDFL_FORCEFEEDBACK) return FALSE; #endif if (!(dwFlags & DIEDFL_FORCEFEEDBACK) || joydevs[id].has_ff) { fill_joystick_dideviceinstanceA(lpddi, version, id); return TRUE; } return FALSE; }