summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--configure.ac2
-rw-r--r--src/evdev_brain.c16
3 files changed, 25 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 215f5e5..d348d2d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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));