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