summarylogtreecommitdiffstats
path: root/0001-systemd-logind-do-not-rely-on-directed-signals.patch
diff options
context:
space:
mode:
authorDet2015-07-01 08:18:07 +0300
committerDet2015-07-01 08:18:07 +0300
commit9690cd46a68cd1a35f51e84c6655fdd0bd042679 (patch)
tree1e8f6712bb784ec32853131d0a23c0b2c368ad71 /0001-systemd-logind-do-not-rely-on-directed-signals.patch
parentbc4ffecab757bf37805fca03e75794be83a57f59 (diff)
downloadaur-9690cd46a68cd1a35f51e84c6655fdd0bd042679.tar.gz
1.17.2-2: Add a kdbux fix
Diffstat (limited to '0001-systemd-logind-do-not-rely-on-directed-signals.patch')
-rw-r--r--0001-systemd-logind-do-not-rely-on-directed-signals.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/0001-systemd-logind-do-not-rely-on-directed-signals.patch b/0001-systemd-logind-do-not-rely-on-directed-signals.patch
new file mode 100644
index 000000000000..9daadf6f6336
--- /dev/null
+++ b/0001-systemd-logind-do-not-rely-on-directed-signals.patch
@@ -0,0 +1,55 @@
+From 780a69aff0ff57ef813179a2f09556eaf488cdfc Mon Sep 17 00:00:00 2001
+From: David Herrmann <dh.herrmann@gmail.com>
+Date: Mon, 22 Jun 2015 21:13:05 +0200
+Subject: systemd-logind: do not rely on directed signals
+
+Right now, Xorg does not install DBus matches for "PauseDevice" /
+"ResumeDevice". Therefore, it should usually not receive those DBus
+signals from logind. It is just a coincidence that systemd-logind sends
+those signals in a directed manner right now. Therefore, dbus-daemon
+bypasses the broadcast matches.
+
+However, this is not ABI and Xorg should not rely on this. systemd-logind
+is free to send those signals as broadcasts, in which case Xorg will
+freeze the VT. Fix this by always installing those matches.
+
+Cc: Hans de Goede <hdegoede@redhat.com>
+Cc: Keith Packard <keithp@keithp.com>
+Reported-by: Jan Alexander Steffens <jan.steffens@gmail.com>
+Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Tested-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+
+diff --git a/hw/xfree86/os-support/linux/systemd-logind.c b/hw/xfree86/os-support/linux/systemd-logind.c
+index 69e2f67..2612d9e 100644
+--- a/hw/xfree86/os-support/linux/systemd-logind.c
++++ b/hw/xfree86/os-support/linux/systemd-logind.c
+@@ -507,6 +507,24 @@ connect_hook(DBusConnection *connection, void *data)
+ goto cleanup;
+ }
+
++ dbus_bus_add_match(connection,
++ "type='signal',sender='org.freedesktop.login1',interface='org.freedesktop.login1.Session',member='PauseDevice'",
++ &error);
++ if (dbus_error_is_set(&error)) {
++ LogMessage(X_ERROR, "systemd-logind: could not add match: %s\n",
++ error.message);
++ goto cleanup;
++ }
++
++ dbus_bus_add_match(connection,
++ "type='signal',sender='org.freedesktop.login1',interface='org.freedesktop.login1.Session',member='ResumeDevice'",
++ &error);
++ if (dbus_error_is_set(&error)) {
++ LogMessage(X_ERROR, "systemd-logind: could not add match: %s\n",
++ error.message);
++ goto cleanup;
++ }
++
+ /*
+ * HdG: This is not useful with systemd <= 208 since the signal only
+ * contains invalidated property names there, rather than property, val
+--
+cgit v0.10.2
+