xf86Xinput: release server managed fd before removing the device from the list

So that the fd in use test in systemd_logind_release_fd works properly.

Note we cannot change the test inside systemd_logind_release_fd as it must
work for devices which were never added to the xf86InputDevs too.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Hans de Goede 2014-03-12 16:00:23 +01:00
parent 0e972b6037
commit 2b77b208da

View File

@ -766,6 +766,11 @@ xf86DeleteInput(InputInfoPtr pInp, int flags)
FreeInputAttributes(pInp->attrs);
if (pInp->flags & XI86_SERVER_FD) {
systemd_logind_release_fd(pInp->major, pInp->minor);
close(pInp->fd);
}
/* Remove the entry from the list. */
if (pInp == xf86InputDevs)
xf86InputDevs = pInp->next;
@ -779,11 +784,6 @@ xf86DeleteInput(InputInfoPtr pInp, int flags)
/* Else the entry wasn't in the xf86InputDevs list (ignore this). */
}
if (pInp->flags & XI86_SERVER_FD) {
systemd_logind_release_fd(pInp->major, pInp->minor);
close(pInp->fd);
}
free((void *) pInp->driver);
free((void *) pInp->name);
xf86optionListFree(pInp->options);