static HRESULT joydev_enum_deviceW(DWORD dwDevType, DWORD dwFlags, LPDIDEVICEINSTANCEW 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].device, strerror(errno)); return S_FALSE; } fill_joystick_dideviceinstanceW( lpddi, version, id ); close(fd); TRACE("Enumerating the linux Joystick device: %s (%s)\n", joystick_devices[id].device, joystick_devices[id].name); return S_OK; } return S_FALSE; }
static HRESULT WINAPI JoystickLinuxWImpl_GetDeviceInfo(LPDIRECTINPUTDEVICE8W iface, LPDIDEVICEINSTANCEW ddi) { JoystickImpl *This = impl_from_IDirectInputDevice8W(iface); TRACE("(%p) %p\n", This, ddi); if (ddi == NULL) return E_POINTER; if ((ddi->dwSize != sizeof(DIDEVICEINSTANCE_DX3W)) && (ddi->dwSize != sizeof(DIDEVICEINSTANCEW))) return DIERR_INVALIDPARAM; fill_joystick_dideviceinstanceW( ddi, This->generic.base.dinput->dwVersion, get_joystick_index(&This->generic.base.guid) ); return DI_OK; }
static BOOL joydev_enum_deviceW(DWORD dwDevType, DWORD dwFlags, LPDIDEVICEINSTANCEW 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_dideviceinstanceW(lpddi, version, id); return TRUE; } return FALSE; }