34 lines
1.4 KiB
Diff
34 lines
1.4 KiB
Diff
From 3e7f6cf9565e007545112f245e69b2bf45866258 Mon Sep 17 00:00:00 2001
|
|
From: David Herrmann <dh.herrmann@gmail.com>
|
|
Date: Sat, 20 Sep 2014 09:29:11 +0200
|
|
Subject: [PATCH] terminal: parse ID_SEAT not only for parents but the device
|
|
itself
|
|
|
|
When deciding what seat a device is on, we have to traverse all parents
|
|
to find one with an ID_SEAT tag, otherwise, input devices plugged on a
|
|
seated USB-hub are not automatically attached to the right seat. But any
|
|
tags on the main device still overwrite the tags of the childs, so fix our
|
|
logic to check the device itself first, before traversing the parents.
|
|
---
|
|
src/libsystemd-terminal/sysview.c | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/libsystemd-terminal/sysview.c b/src/libsystemd-terminal/sysview.c
|
|
index fde87d1117..6c1a9543b9 100644
|
|
--- a/src/libsystemd-terminal/sysview.c
|
|
+++ b/src/libsystemd-terminal/sysview.c
|
|
@@ -893,11 +893,11 @@ static int context_ud_hotplug(sysview_context *c, struct udev_device *d) {
|
|
|
|
p = d;
|
|
seatname = NULL;
|
|
- while ((p = udev_device_get_parent(p))) {
|
|
+ do {
|
|
seatname = udev_device_get_property_value(p, "ID_SEAT");
|
|
if (seatname)
|
|
break;
|
|
- }
|
|
+ } while ((p = udev_device_get_parent(p)));
|
|
|
|
seat = sysview_find_seat(c, seatname ? : "seat0");
|
|
if (!seat)
|