From f794e9e37c1595a5f092a636a1af3dfe58485f35 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 12 Jun 2002 03:32:01 +0000 Subject: [PATCH] API changes on OpenBSD and FreeBSD... --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40408 --- configure.in | 27 +++++++++++++++++++++++++++ src/joystick/bsd/SDL_sysjoystick.c | 14 +++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/configure.in b/configure.in index a4eb7a1e9..3f0c99715 100644 --- a/configure.in +++ b/configure.in @@ -1614,6 +1614,33 @@ CheckUSBHID() CFLAGS="$CFLAGS -DUSBHID_UCR_DATA" fi AC_MSG_RESULT($have_usbhid_ucr_data) + + AC_MSG_CHECKING(for new usbhid API) + have_usbhid_new=no + AC_TRY_COMPILE([ + #include + #if defined(HAVE_USB_H) + #include + #endif + #include + #include + #if defined(HAVE_USBHID_H) + #include + #elif defined(HAVE_LIBUSB_H) + #include + #elif defined(HAVE_LIBUSBHID_H) + #include + #endif + ],[ + report_desc_t d; + hid_start_parse(d, 1, 1); + ],[ + have_usbhid_new=yes + ]) + if test x$have_usbhid_new = xyes; then + CFLAGS="$CFLAGS -DUSBHID_NEW" + fi + AC_MSG_RESULT($have_usbhid_new) JOYSTICK_SUBDIRS="$JOYSTICK_SUBDIRS bsd" JOYSTICK_DRIVERS="$JOYSTICK_DRIVERS bsd/libjoystick_bsd.la" diff --git a/src/joystick/bsd/SDL_sysjoystick.c b/src/joystick/bsd/SDL_sysjoystick.c index 69f454edd..5162529fc 100644 --- a/src/joystick/bsd/SDL_sysjoystick.c +++ b/src/joystick/bsd/SDL_sysjoystick.c @@ -29,7 +29,7 @@ #ifdef SAVE_RCSID static char rcsid = - "@(#) $Id $"; + "@(#) $Id$"; #endif #include @@ -210,7 +210,11 @@ SDL_SYS_JoystickOpen(SDL_Joystick *joy) goto usberr; } +#ifdef USBHID_NEW + hdata = hid_start_parse(hw->repdesc, 1 << hid_input, rep->rid); +#else hdata = hid_start_parse(hw->repdesc, 1 << hid_input); +#endif if (hdata == NULL) { SDL_SetError("%s: Cannot start HID parser", hw->path); goto usberr; @@ -296,7 +300,11 @@ SDL_SYS_JoystickUpdate(SDL_Joystick *joy) if (read(joy->hwdata->fd, REP_BUF_DATA(rep), rep->size) != rep->size) { return; } +#ifdef USBHID_NEW + hdata = hid_start_parse(joy->hwdata->repdesc, 1 << hid_input, rep->rid); +#else hdata = hid_start_parse(joy->hwdata->repdesc, 1 << hid_input); +#endif if (hdata == NULL) { fprintf(stderr, "%s: Cannot start HID parser\n", joy->hwdata->path); @@ -400,7 +408,11 @@ report_alloc(struct report *r, struct report_desc *rd, int repind) { int len; +#ifdef USBHID_NEW + len = hid_report_size(rd, repinfo[repind].kind, r->rid); +#else len = hid_report_size(rd, repinfo[repind].kind, &r->rid); +#endif if (len < 0) { SDL_SetError("Negative HID report size"); return (-1);