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. --- src/evdev_brain.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/evdev_brain.c') 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