X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flogin%2Flogind-core.c;h=e8da59a18252861127bd548b0d152588ddea5919;hp=053d2ed63e189df1cfec0c53e8d3093deb672ca7;hb=2eec67acbb00593e414549a7e5b35eb7dd776b1b;hpb=94036de887ad5b0dc805abe38b5c1c58b57d9465 diff --git a/src/login/logind-core.c b/src/login/logind-core.c index 053d2ed63..e8da59a18 100644 --- a/src/login/logind-core.c +++ b/src/login/logind-core.c @@ -20,16 +20,13 @@ ***/ #include -#include #include #include #include -#include #include #include "strv.h" #include "cgroup-util.h" -#include "audit.h" #include "bus-util.h" #include "bus-error.h" #include "udev-util.h" @@ -101,7 +98,7 @@ int manager_add_user(Manager *m, uid_t uid, gid_t gid, const char *name, User ** assert(m); assert(name); - u = hashmap_get(m->users, ULONG_TO_PTR((unsigned long) uid)); + u = hashmap_get(m->users, UID_TO_PTR(uid)); if (!u) { u = user_new(m, uid, gid, name); if (!u) @@ -537,3 +534,25 @@ int manager_count_displays(Manager *m) { return n; } + +bool manager_is_docked_or_multiple_displays(Manager *m) { + int n; + + /* If we are docked don't react to lid closing */ + if (manager_is_docked(m)) { + log_debug("System is docked."); + return true; + } + + /* If we have more than one display connected, + * assume that we are docked. */ + n = manager_count_displays(m); + if (n < 0) + log_warning_errno(n, "Display counting failed: %m"); + else if (n > 1) { + log_debug("Multiple (%i) displays connected.", n); + return true; + } + + return false; +}