Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Joystick patch from FreeBSD ports system
Browse files Browse the repository at this point in the history
  • Loading branch information
slouken committed Oct 12, 2009
1 parent e0eae59 commit 111e05d
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions src/joystick/bsd/SDL_sysjoystick.c
Expand Up @@ -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 */
Expand Down Expand Up @@ -142,7 +149,7 @@ static char *joydevnames[MAX_JOYS];
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)
Expand Down Expand Up @@ -300,9 +307,13 @@ SDL_SYS_JoystickOpen(SDL_Joystick * joy)
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) {
Expand Down

0 comments on commit 111e05d

Please sign in to comment.