# HG changeset patch # User Sam Lantinga # Date 1255339975 0 # Node ID b3171b7561d86bee0c0be5187e94004a7f329843 # Parent a8e5b518e19499c9bd84e78320d51dbd1afa3327 Joystick patch from FreeBSD ports system diff -r a8e5b518e194 -r b3171b7561d8 src/joystick/bsd/SDL_sysjoystick.c --- a/src/joystick/bsd/SDL_sysjoystick.c Mon Oct 12 08:58:12 2009 +0000 +++ b/src/joystick/bsd/SDL_sysjoystick.c Mon Oct 12 09:32:55 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 */ size_t size; /* Buffer size */ @@ -141,7 +148,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) @@ -296,9 +303,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) {