summaryrefslogtreecommitdiffstats
path: root/src/login/logind-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/login/logind-core.c')
-rw-r--r--src/login/logind-core.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/src/login/logind-core.c b/src/login/logind-core.c
index f15008e..71e4247 100644
--- a/src/login/logind-core.c
+++ b/src/login/logind-core.c
@@ -40,6 +40,8 @@ void manager_reset_config(Manager *m) {
m->inhibit_delay_max = 5 * USEC_PER_SEC;
m->user_stop_delay = 10 * USEC_PER_SEC;
+ m->handle_action_sleep_mask = HANDLE_ACTION_SLEEP_MASK_DEFAULT;
+
m->handle_power_key = HANDLE_POWEROFF;
m->handle_power_key_long_press = HANDLE_IGNORE;
m->handle_reboot_key = HANDLE_REBOOT;
@@ -80,9 +82,12 @@ void manager_reset_config(Manager *m) {
int manager_parse_config_file(Manager *m) {
assert(m);
- return config_parse_config_file("logind.conf", "Login\0",
- config_item_perf_lookup, logind_gperf_lookup,
- CONFIG_PARSE_WARN, m);
+ return config_parse_standard_file_with_dropins(
+ "systemd/logind.conf",
+ "Login\0",
+ config_item_perf_lookup, logind_gperf_lookup,
+ CONFIG_PARSE_WARN,
+ /* userdata= */ m);
}
int manager_add_device(Manager *m, const char *sysfs, bool master, Device **ret_device) {
@@ -116,7 +121,7 @@ int manager_add_seat(Manager *m, const char *id, Seat **ret_seat) {
s = hashmap_get(m->seats, id);
if (!s) {
- r = seat_new(&s, m, id);
+ r = seat_new(m, id, &s);
if (r < 0)
return r;
}
@@ -136,7 +141,7 @@ int manager_add_session(Manager *m, const char *id, Session **ret_session) {
s = hashmap_get(m->sessions, id);
if (!s) {
- r = session_new(&s, m, id);
+ r = session_new(m, id, &s);
if (r < 0)
return r;
}
@@ -160,7 +165,7 @@ int manager_add_user(
u = hashmap_get(m->users, UID_TO_PTR(ur->uid));
if (!u) {
- r = user_new(&u, m, ur);
+ r = user_new(m, ur, &u);
if (r < 0)
return r;
}
@@ -216,7 +221,7 @@ int manager_add_inhibitor(Manager *m, const char* id, Inhibitor **ret) {
i = hashmap_get(m->inhibitors, id);
if (!i) {
- r = inhibitor_new(&i, m, id);
+ r = inhibitor_new(m, id, &i);
if (r < 0)
return r;
}
@@ -366,10 +371,8 @@ int manager_get_session_by_pidref(Manager *m, const PidRef *pid, Session **ret)
return r;
} else {
r = cg_pidref_get_unit(pid, &unit);
- if (r < 0)
- return r;
-
- s = hashmap_get(m->session_units, unit);
+ if (r >= 0)
+ s = hashmap_get(m->session_units, unit);
}
if (ret)
@@ -411,6 +414,9 @@ int manager_get_idle_hint(Manager *m, dual_timestamp *t) {
dual_timestamp k;
int ih;
+ if (!SESSION_CLASS_CAN_IDLE(s->class))
+ continue;
+
ih = session_get_idle_hint(s, &k);
if (ih < 0)
return ih;
@@ -586,7 +592,7 @@ static int manager_count_external_displays(Manager *m) {
return r;
FOREACH_DEVICE(e, d) {
- const char *status, *enabled, *dash, *nn, *subsys;
+ const char *status, *enabled, *dash, *nn;
sd_device *p;
if (sd_device_get_parent(d, &p) < 0)
@@ -595,7 +601,7 @@ static int manager_count_external_displays(Manager *m) {
/* If the parent shares the same subsystem as the
* device we are looking at then it is a connector,
* which is what we are interested in. */
- if (sd_device_get_subsystem(p, &subsys) < 0 || !streq(subsys, "drm"))
+ if (!device_in_subsystem(p, "drm"))
continue;
if (sd_device_get_sysname(d, &nn) < 0)