From eca922bd95fbcf09dd0839e571dc30263c94172f Mon Sep 17 00:00:00 2001 From: "Zephaniah E. Hull" Date: Sun, 30 Apr 2006 21:39:08 +0000 Subject: xf86-input-evdev v1.1.2 Bugzilla #6734 Apply patch from Philip Langdale which causes us to make sure that O_NONBLOCK is set on the inotify device. --- ChangeLog | 9 +++++++++ configure.ac | 2 +- src/evdev_brain.c | 16 +++++++++++++++- 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 + + * configure.ac: + xf86-input-evdev v1.1.2 + * src/evdev_brain.c: (evdevControl): + Bugzilla #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 * 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 #include +#include #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)); -- cgit v1.2.3