Commit 5dcb0666 authored by Mihail Konev's avatar Mihail Konev Committed by Keith Packard

os/inputthread: Ensure pollfd refreshing

When putting a device node into a poll-request list, do not overwrite a
"please-remove" element with the same fd, so that a closed device file
is ospoll_remove'd prior to being ospoll_add'ed.

Before, the opposite order was possible, resulting in ospoll_add
considering the newly opened file being already polled, should it have a
fd for which the "please-remove" has not been procesed yet. In this
case, no further events would be seen from the device.
Signed-off-by: default avatarMihail Konev <>
Regressed-in: 52d6a1e8
Patchwork: default avatarHans de Goede <>
Reviewed-and-Reduced-by: Peter Hutterer's avatarPeter Hutterer <>
Reviewed-by: Keith Packard's avatarKeith Packard <>
Signed-off-by: Keith Packard's avatarKeith Packard <>
parent 9cf0bd4d
......@@ -197,7 +197,7 @@ InputThreadRegisterDev(int fd,
dev = NULL;
xorg_list_for_each_entry(old, &inputThreadInfo->devs, node) {
if (old->fd == fd) {
if (old->fd == fd && old->state != device_state_removed) {
dev = old;
......@@ -218,6 +218,9 @@ InputThreadRegisterDev(int fd,
dev->readInputProc = readInputProc;
dev->readInputArgs = readInputArgs;
dev->state = device_state_added;
/* Do not prepend, so that any dev->state == device_state_removed
* with the same dev->fd get processed first. */
xorg_list_append(&dev->node, &inputThreadInfo->devs);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment