diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | src/evdev_brain.c | 16 |
3 files changed, 25 insertions, 2 deletions
@@ -1,3 +1,12 @@ +2006-04-30 Zephaniah E. Hull <warp@aehallh.com> + + * configure.ac: + xf86-input-evdev v1.1.2 + * src/evdev_brain.c: (evdevControl): + Bugzilla #6734 <https://bugs.freedesktop.org/show_bug.cgi=6734> + Apply patch from Philip Langdale which causes us to make sure that + O_NONBLOCK is set on the inotify device. + 2006-04-15 Zephaniah E. Hull <warp@aehallh.com> * configure.ac: diff --git a/configure.ac b/configure.ac index 4f9a98a..e849632 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ(2.57) AC_INIT([xf86-input-evdev], - 1.1.1, + 1.1.2, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xf86-input-evdev) diff --git a/src/evdev_brain.c b/src/evdev_brain.c index c4b6fd1..7c854d8 100644 --- a/src/evdev_brain.c +++ b/src/evdev_brain.c @@ -39,6 +39,7 @@ #include <xf86.h> #include <fnmatch.h> +#include <sys/poll.h> #include "inotify.h" #include "inotify-syscalls.h" @@ -347,7 +348,7 @@ static int evdevControl(DeviceIntPtr pPointer, int what) { InputInfoPtr pInfo; - int i; + int i, flags; pInfo = pPointer->public.devicePrivate; @@ -376,6 +377,19 @@ evdevControl(DeviceIntPtr pPointer, int what) SYSCALL (close (pInfo->fd)); pInfo->fd = -1; } + if ((flags = fcntl(pInfo->fd, F_GETFL)) < 0) { + xf86Msg(X_ERROR, "%s: Unable to NONBLOCK inotify, using fallback. " + "(errno: %d)\n", pInfo->name, errno); + evdev_inotify = 0; + SYSCALL (close (pInfo->fd)); + pInfo->fd = -1; + } else if (fcntl(pInfo->fd, F_SETFL, flags | O_NONBLOCK) < 0) { + xf86Msg(X_ERROR, "%s: Unable to NONBLOCK inotify, using fallback. " + "(errno: %d)\n", pInfo->name, errno); + evdev_inotify = 0; + SYSCALL (close (pInfo->fd)); + pInfo->fd = -1; + } if (!evdev_inotify) { SYSCALL (pInfo->fd = open ("/proc/bus/usb/devices", O_RDONLY)); |