logind: call SetType on the logind session
This allows manual handling of IdleAction and IdleHint rather than automatically calling the IdleAction every IdleSecs, due to inactivity on the underlying tty. Fixes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1194 Signed-off-by: aarondill <aaronsacks2006@gmail.com> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
13e513d2f0
commit
2260dea7d8
|
@ -444,6 +444,7 @@ message_filter(DBusConnection * connection, DBusMessage * message, void *data)
|
|||
static void
|
||||
connect_hook(DBusConnection *connection, void *data)
|
||||
{
|
||||
const char *session_type = "x11";
|
||||
struct systemd_logind_info *info = data;
|
||||
DBusError error;
|
||||
DBusMessage *msg = NULL;
|
||||
|
@ -510,6 +511,33 @@ connect_hook(DBusConnection *connection, void *data)
|
|||
error.message);
|
||||
goto cleanup;
|
||||
}
|
||||
dbus_message_unref(msg);
|
||||
dbus_message_unref(reply);
|
||||
reply = NULL;
|
||||
|
||||
msg = dbus_message_new_method_call("org.freedesktop.login1",
|
||||
session, "org.freedesktop.login1.Session", "SetType");
|
||||
if (!msg) {
|
||||
LogMessage(X_ERROR, "systemd-logind: out of memory\n");
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!dbus_message_append_args(msg, DBUS_TYPE_STRING, &session_type,
|
||||
DBUS_TYPE_INVALID)) {
|
||||
LogMessage(X_ERROR, "systemd-logind: out of memory\n");
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
reply = dbus_connection_send_with_reply_and_block(connection, msg,
|
||||
DBUS_TIMEOUT_USE_DEFAULT, &error);
|
||||
/* Requires systemd >= 246, SetType() is not critical for xserver function */
|
||||
if (!reply) {
|
||||
/* unprevileged users get access denied rather than unknown method */
|
||||
if (!dbus_error_has_name(&error, DBUS_ERROR_ACCESS_DENIED) &&
|
||||
!dbus_error_has_name(&error, DBUS_ERROR_UNKNOWN_METHOD))
|
||||
LogMessage(X_WARNING, "systemd-logind: SetType failed: %s\n", error.message);
|
||||
dbus_error_free(&error);
|
||||
}
|
||||
|
||||
dbus_bus_add_match(connection,
|
||||
"type='signal',sender='org.freedesktop.login1',interface='org.freedesktop.login1.Session',member='PauseDevice'",
|
||||
|
|
Loading…
Reference in New Issue