Skip to content

Commit

Permalink
Fixed bug 5335 - enable joystick/haptic/evdev support by default on F…
Browse files Browse the repository at this point in the history
…reeBSD

Alex S

Evdev headers aren't actually included in the base system (well, it has a private copy), they are available through the devel/evdev-proto port instead. We also have devel/libinotify and devel/libudev-devd shims, I didn't verify whether they work with SDL.
  • Loading branch information
slouken committed Nov 24, 2020
1 parent 38ab8bf commit e9869e0
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 5 deletions.
29 changes: 24 additions & 5 deletions configure.ac
Expand Up @@ -2738,6 +2738,20 @@ AS_HELP_STRING([--enable-ime], [enable IME support [[default=yes]]]),
fi
}

dnl Check inotify presense
CheckInotify()
{
AC_CHECK_HEADER(sys/inotify.h, have_inotify_inotify_h_hdr=yes)
if test x$have_inotify_inotify_h_hdr = xyes; then
AC_DEFINE(HAVE_INOTIFY_H, 1, [ ])
case "$host" in
*-*-freebsd*)
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -linotify"
;;
esac
fi
}

dnl See if the platform has libibus IME support.
CheckIBus()
{
Expand All @@ -2751,9 +2765,6 @@ AS_HELP_STRING([--enable-ibus], [enable IBus support [[default=yes]]]),
AC_CHECK_HEADER(ibus-1.0/ibus.h,
have_ibus_ibus_h_hdr=yes,
have_ibus_ibus_h_hdr=no)
AC_CHECK_HEADER(sys/inotify.h,
have_inotify_inotify_h_hdr=yes,
have_inotify_inotify_h_hdr=no)
CFLAGS="$save_CFLAGS"
if test x$have_ibus_ibus_h_hdr = xyes; then
if test x$enable_ime != xyes; then
Expand Down Expand Up @@ -3449,7 +3460,6 @@ AS_HELP_STRING([--enable-joystick-virtual], [enable virtual joystick APIs [[defa
fi
}


dnl Do this on all platforms, before everything else (other things might want to override it).
CheckWarnAll
CheckNoStrictAliasing
Expand Down Expand Up @@ -3531,6 +3541,7 @@ case "$host" in
CheckLibUDev
CheckDBus
CheckIME
CheckInotify
CheckIBus
CheckFcitx
case $ARCH in
Expand Down Expand Up @@ -3590,12 +3601,20 @@ case "$host" in
# Set up files for the joystick library
if test x$enable_joystick = xyes; then
case $ARCH in
linux|freebsd)
linux)
AC_DEFINE(SDL_JOYSTICK_LINUX, 1, [ ])
SOURCES="$SOURCES $srcdir/src/joystick/linux/*.c"
SOURCES="$SOURCES $srcdir/src/joystick/steam/*.c"
have_joystick=yes
;;
freebsd)
if test x$use_input_events = xyes; then
AC_DEFINE(SDL_JOYSTICK_LINUX, 1, [ ])
SOURCES="$SOURCES $srcdir/src/joystick/linux/*.c"
SOURCES="$SOURCES $srcdir/src/joystick/steam/*.c"
have_joystick=yes
fi
;;
android)
AC_DEFINE(SDL_JOYSTICK_ANDROID, 1, [ ])
SOURCES="$SOURCES $srcdir/src/joystick/android/*.c"
Expand Down
1 change: 1 addition & 0 deletions include/SDL_config.h.in
Expand Up @@ -207,6 +207,7 @@
#undef HAVE_ALTIVEC_H
#undef HAVE_DBUS_DBUS_H
#undef HAVE_FCITX
#undef HAVE_INOTIFY_H
#undef HAVE_IBUS_IBUS_H
#undef HAVE_IMMINTRIN_H
#undef HAVE_LIBSAMPLERATE_H
Expand Down
8 changes: 8 additions & 0 deletions src/joystick/linux/SDL_sysjoystick.c
Expand Up @@ -32,7 +32,9 @@
#include <errno.h> /* errno, strerror */
#include <fcntl.h>
#include <limits.h> /* For the definition of PATH_MAX */
#ifdef HAVE_INOTIFY_H
#include <sys/inotify.h>
#endif
#include <sys/ioctl.h>
#include <unistd.h>
#include <dirent.h>
Expand Down Expand Up @@ -498,6 +500,7 @@ static void SteamControllerDisconnectedCallback(int device_instance)
}
}

#ifdef HAVE_INOTIFY_H
static int
StrHasPrefix(const char *string, const char *prefix)
{
Expand Down Expand Up @@ -566,6 +569,7 @@ LINUX_InotifyJoystickDetect(void)
}
}
}
#endif /* HAVE_INOTIFY_H */

static void
LINUX_FallbackJoystickDetect(void)
Expand Down Expand Up @@ -612,7 +616,9 @@ LINUX_JoystickDetect(void)
else
#endif
if (inotify_fd >= 0) {
#ifdef HAVE_INOTIFY_H
LINUX_InotifyJoystickDetect();
#endif
}
else {
LINUX_FallbackJoystickDetect();
Expand Down Expand Up @@ -678,6 +684,7 @@ LINUX_JoystickInit(void)
else
#endif
{
#ifdef HAVE_INOTIFY_H
inotify_fd = inotify_init1(IN_NONBLOCK | IN_CLOEXEC);

if (inotify_fd < 0) {
Expand All @@ -700,6 +707,7 @@ LINUX_JoystickInit(void)
strerror (errno));
}
}
#endif /* HAVE_INOTIFY_H */

/* Report all devices currently present */
LINUX_JoystickDetect();
Expand Down

0 comments on commit e9869e0

Please sign in to comment.