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>
This commit is contained in:
parent
d3352d0987
commit
780a69aff0
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user