Fixed bug 5360 - non-libudev joystick detection doesn't see controllers that were already connected

Simon McVittie

When watching for hotplug events we can poll the inotify fd, but we
still need to scan /dev/input once per process, otherwise we'll fail
to detect devices that were already connected.
This commit is contained in:
Sam Lantinga 2020-11-23 21:14:37 -08:00
parent 8e2746cfb6
commit c8c818d7a4

View File

@ -571,6 +571,10 @@ LINUX_InotifyJoystickDetect(void)
} }
#endif /* HAVE_INOTIFY_H */ #endif /* HAVE_INOTIFY_H */
/* Detect devices by reading /dev/input. In the inotify code path we
* have to do this the first time, to detect devices that already existed
* before we started; in the non-inotify code path we do this repeatedly
* (polling). */
static void static void
LINUX_FallbackJoystickDetect(void) LINUX_FallbackJoystickDetect(void)
{ {
@ -615,12 +619,13 @@ LINUX_JoystickDetect(void)
} }
else else
#endif #endif
if (inotify_fd >= 0) {
#ifdef HAVE_INOTIFY_H #ifdef HAVE_INOTIFY_H
if (inotify_fd >= 0 && last_joy_detect_time != 0) {
LINUX_InotifyJoystickDetect(); LINUX_InotifyJoystickDetect();
#endif
} }
else { else
#endif
{
LINUX_FallbackJoystickDetect(); LINUX_FallbackJoystickDetect();
} }