X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Flogind-core.c;h=ed7ea5da31cd9ba45aaeb6838e6b78824cd186cb;hb=3c56cab44150ad47323970cfadfb0257c6305a74;hp=053d2ed63e189df1cfec0c53e8d3093deb672ca7;hpb=36202fd2bc252616966166c98ccb0e0e5ece1fc9;p=elogind.git diff --git a/src/login/logind-core.c b/src/login/logind-core.c index 053d2ed63..ed7ea5da3 100644 --- a/src/login/logind-core.c +++ b/src/login/logind-core.c @@ -537,3 +537,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("Display counting failed: %s", strerror(-n)); + else if (n > 1) { + log_debug("Multiple (%i) displays connected.", n); + return true; + } + + return false; +}