Browse Source

Input: evdev - signal that device is writable in evdev_poll()

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Dmitry Torokhov 15 years ago
parent
commit
c18fb1396e
1 changed files with 7 additions and 2 deletions
  1. 7 2
      drivers/input/evdev.c

+ 7 - 2
drivers/input/evdev.c

@@ -403,10 +403,15 @@ static unsigned int evdev_poll(struct file *file, poll_table *wait)
 {
 {
 	struct evdev_client *client = file->private_data;
 	struct evdev_client *client = file->private_data;
 	struct evdev *evdev = client->evdev;
 	struct evdev *evdev = client->evdev;
+	unsigned int mask;
 
 
 	poll_wait(file, &evdev->wait, wait);
 	poll_wait(file, &evdev->wait, wait);
-	return ((client->head == client->tail) ? 0 : (POLLIN | POLLRDNORM)) |
-		(evdev->exist ? 0 : (POLLHUP | POLLERR));
+
+	mask = evdev->exist ? POLLOUT | POLLWRNORM : POLLHUP | POLLERR;
+	if (client->head != client->tail)
+		mask |= POLLIN | POLLRDNORM;
+
+	return mask;
 }
 }
 
 
 #ifdef CONFIG_COMPAT
 #ifdef CONFIG_COMPAT