Mercurial > sdl-ios-xcode
changeset 3385:45d7f0f70b27
Joystick patch from FreeBSD ports system
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 12 Oct 2009 09:42:50 +0000 |
parents | 04af265172f9 |
children | fff074de9675 |
files | src/joystick/bsd/SDL_sysjoystick.c |
diffstat | 1 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/joystick/bsd/SDL_sysjoystick.c Mon Oct 12 08:21:43 2009 +0000 +++ b/src/joystick/bsd/SDL_sysjoystick.c Mon Oct 12 09:42:50 2009 +0000 @@ -78,6 +78,13 @@ #define MAX_JOY_JOYS 2 #define MAX_JOYS (MAX_UHID_JOYS + MAX_JOY_JOYS) +#if defined(__FREEBSD__) && (__FreeBSD_kernel_version > 800063) +struct usb_ctl_report { + int ucr_report; + u_char ucr_data[1024]; /* filled data size will vary */ +}; +#endif + struct report { struct usb_ctl_report *buf; /* Buffer */ @@ -142,7 +149,7 @@ static int report_alloc(struct report *, struct report_desc *, int); static void report_free(struct report *); -#ifdef USBHID_UCR_DATA +#if defined(USBHID_UCR_DATA) || (defined(__FREEBSD__) && (__FreeBSD_kernel_version > 800063)) #define REP_BUF_DATA(rep) ((rep)->buf->ucr_data) #else #define REP_BUF_DATA(rep) ((rep)->buf->data) @@ -300,9 +307,13 @@ strerror(errno)); goto usberr; } - +#if defined(__FREEBSD__) && (__FreeBSD_kernel_version > 800063) + rep->rid = hid_get_report_id(fd); + if (rep->rid < 0) { +#else rep = &hw->inreport; if (ioctl(fd, USB_GET_REPORT_ID, &rep->rid) < 0) { +#endif rep->rid = -1; /* XXX */ } if (report_alloc(rep, hw->repdesc, REPORT_INPUT) < 0) {