[systemd-devel] [PATCH v2] logind: allow suspending if there are no displays
Mantas Mikulėnas
grawity at gmail.com
Sun Apr 27 14:58:56 PDT 2014
With proprietary graphics drivers, there won't be any 'drm' devices in
sysfs, so logind will never suspend the system upon closing the lid,
even if only one (internal) display is connected. This has been reported
by multiple users so far.
IMHO, it's better to suspend the system in this case for safety reasons,
to avoid having nvidia blob users' laptops overheat, for the same reason
that sleep inhibitors are overridden (LidSwitchIgnoreInhibited=yes).
---
(Oops. I didn't even notice the comment...)
Yes, even if it's intentional, I think the current behavior can be unsafe;
meanwhile, people who want to avoid suspending can use `systemd-inhibit` in
the no display case:
systemd-inhibit --what=sleep:handle-lid-switch -- sleep 30d &
src/login/logind-action.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/src/login/logind-action.c b/src/login/logind-action.c
index 1928f43..d69c7ad 100644
--- a/src/login/logind-action.c
+++ b/src/login/logind-action.c
@@ -79,14 +79,12 @@ int manager_handle_action(
return 0;
}
- /* If we have more than one or no displays connected,
- * don't react to lid closing. The no display case we
- * treat like this under the assumption that there is
- * no modern drm driver available. */
+ /* If we have more than one display connected,
+ * don't react to lid closing. */
n = manager_count_displays(m);
if (n < 0)
log_warning("Display counting failed: %s", strerror(-n));
- else if (n != 1) {
+ else if (n > 1) {
log_debug("Ignoring lid switch request, %i displays connected.", n);
return 0;
}
--
2.0.0.rc0.38.g1697bf3
More information about the systemd-devel
mailing list