Skip to content

Commit

Permalink
config/udev: Respect seat assignments when assigned devices
Browse files Browse the repository at this point in the history
Jonathan Dieter posted a few patches to do this inside the Xorg
server but it makes no sense to do it there, just have the code
we use to probe the device list at startup check seat assignments
using the same code we check at hotplug time.

Bugilla: https://bugzilla.redhat.com/show_bug.cgi?id=1183654
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Tested-by: Jonathan Dieter <jdieter@lesbg.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 697b696)
  • Loading branch information
airlied committed Jan 31, 2015
1 parent cdcf9e9 commit 645ae07
Showing 1 changed file with 21 additions and 9 deletions.
30 changes: 21 additions & 9 deletions config/udev.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,24 @@ static const char *itoa(int i)
return itoa_buf;
}

static Bool
check_seat(struct udev_device *udev_device)
{
const char *dev_seat;

dev_seat = udev_device_get_property_value(udev_device, "ID_SEAT");
if (!dev_seat)
dev_seat = "seat0";

if (SeatId && strcmp(dev_seat, SeatId))
return FALSE;

if (!SeatId && strcmp(dev_seat, "seat0"))
return FALSE;

return TRUE;
}

static void
device_added(struct udev_device *udev_device)
{
Expand All @@ -83,7 +101,6 @@ device_added(struct udev_device *udev_device)
struct udev_list_entry *set, *entry;
struct udev_device *parent;
int rc;
const char *dev_seat;
dev_t devnum;

path = udev_device_get_devnode(udev_device);
Expand All @@ -93,14 +110,7 @@ device_added(struct udev_device *udev_device)
if (!path || !syspath)
return;

dev_seat = udev_device_get_property_value(udev_device, "ID_SEAT");
if (!dev_seat)
dev_seat = "seat0";

if (SeatId && strcmp(dev_seat, SeatId))
return;

if (!SeatId && strcmp(dev_seat, "seat0"))
if (!check_seat(udev_device))
return;

devnum = udev_device_get_devnum(udev_device);
Expand Down Expand Up @@ -506,6 +516,8 @@ config_udev_odev_probe(config_odev_probe_proc_ptr probe_callback)
goto no_probe;
else if (strncmp(sysname, "card", 4) != 0)
goto no_probe;
else if (!check_seat(udev_device))
goto no_probe;

config_udev_odev_setup_attribs(path, syspath, major(devnum),
minor(devnum), probe_callback);
Expand Down

0 comments on commit 645ae07

Please sign in to comment.