diff options
Diffstat (limited to 'src/login')
-rw-r--r-- | src/login/logind-dbus.c | 3 | ||||
-rw-r--r-- | src/login/logind-gperf.gperf | 1 | ||||
-rw-r--r-- | src/login/logind.c | 3 | ||||
-rw-r--r-- | src/login/logind.conf | 1 | ||||
-rw-r--r-- | src/login/logind.h | 4 |
5 files changed, 7 insertions, 5 deletions
diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 3322d66aa9..b28d280939 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -1448,7 +1448,7 @@ static int execute_shutdown_or_sleep( m->action_what = w; /* Make sure the lid switch is ignored for a while */ - manager_set_lid_switch_ignore(m, now(CLOCK_MONOTONIC) + IGNORE_LID_SWITCH_SUSPEND_USEC); + manager_set_lid_switch_ignore(m, now(CLOCK_MONOTONIC) + m->holdoff_timeout_usec); return 0; } @@ -1979,6 +1979,7 @@ const sd_bus_vtable manager_vtable[] = { SD_BUS_PROPERTY("HandleHibernateKey", "s", property_get_handle_action, offsetof(Manager, handle_hibernate_key), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("HandleLidSwitch", "s", property_get_handle_action, offsetof(Manager, handle_lid_switch), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("HandleLidSwitchDocked", "s", property_get_handle_action, offsetof(Manager, handle_lid_switch_docked), SD_BUS_VTABLE_PROPERTY_CONST), + SD_BUS_PROPERTY("HoldoffTimeoutUSec", "t", NULL, offsetof(Manager, holdoff_timeout_usec), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("IdleAction", "s", property_get_handle_action, offsetof(Manager, idle_action), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("IdleActionUSec", "t", NULL, offsetof(Manager, idle_action_usec), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("PreparingForShutdown", "b", property_get_preparing, 0, 0), diff --git a/src/login/logind-gperf.gperf b/src/login/logind-gperf.gperf index 62460673b9..9218d098e0 100644 --- a/src/login/logind-gperf.gperf +++ b/src/login/logind-gperf.gperf @@ -29,6 +29,7 @@ Login.PowerKeyIgnoreInhibited, config_parse_bool, 0, offsetof(Manag Login.SuspendKeyIgnoreInhibited, config_parse_bool, 0, offsetof(Manager, suspend_key_ignore_inhibited) Login.HibernateKeyIgnoreInhibited, config_parse_bool, 0, offsetof(Manager, hibernate_key_ignore_inhibited) Login.LidSwitchIgnoreInhibited, config_parse_bool, 0, offsetof(Manager, lid_switch_ignore_inhibited) +Login.HoldoffTimeoutSec, config_parse_sec, 0, offsetof(Manager, holdoff_timeout_usec) Login.IdleAction, config_parse_handle_action, 0, offsetof(Manager, idle_action) Login.IdleActionSec, config_parse_sec, 0, offsetof(Manager, idle_action_usec) Login.RuntimeDirectorySize, config_parse_tmpfs_size, 0, offsetof(Manager, runtime_dir_size) diff --git a/src/login/logind.c b/src/login/logind.c index 08a7cbc08a..e7880743a0 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -54,6 +54,7 @@ Manager *manager_new(void) { m->handle_lid_switch = HANDLE_SUSPEND; m->handle_lid_switch_docked = HANDLE_IGNORE; m->lid_switch_ignore_inhibited = true; + m->holdoff_timeout_usec = 30 * USEC_PER_SEC; m->idle_action_usec = 30 * USEC_PER_MINUTE; m->idle_action = HANDLE_IGNORE; @@ -1029,7 +1030,7 @@ int manager_startup(Manager *m) { if (r < 0) return log_error_errno(r, "Failed to add seat0: %m"); - r = manager_set_lid_switch_ignore(m, 0 + IGNORE_LID_SWITCH_STARTUP_USEC); + r = manager_set_lid_switch_ignore(m, 0 + m->holdoff_timeout_usec); if (r < 0) log_warning_errno(r, "Failed to set up lid switch ignore event source: %m"); diff --git a/src/login/logind.conf b/src/login/logind.conf index 834c4c2ebf..6df6f04c77 100644 --- a/src/login/logind.conf +++ b/src/login/logind.conf @@ -27,6 +27,7 @@ #SuspendKeyIgnoreInhibited=no #HibernateKeyIgnoreInhibited=no #LidSwitchIgnoreInhibited=yes +#HoldoffTimeoutSec=30s #IdleAction=ignore #IdleActionSec=30min #RuntimeDirectorySize=10% diff --git a/src/login/logind.h b/src/login/logind.h index 48e647ae82..4781688f0a 100644 --- a/src/login/logind.h +++ b/src/login/logind.h @@ -37,9 +37,6 @@ typedef struct Manager Manager; #include "logind-button.h" #include "logind-action.h" -#define IGNORE_LID_SWITCH_STARTUP_USEC (3 * USEC_PER_MINUTE) -#define IGNORE_LID_SWITCH_SUSPEND_USEC (30 * USEC_PER_SEC) - struct Manager { sd_event *event; sd_bus *bus; @@ -120,6 +117,7 @@ struct Manager { Hashmap *polkit_registry; + usec_t holdoff_timeout_usec; sd_event_source *lid_switch_ignore_event_source; size_t runtime_dir_size; |