diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-09-19 15:42:29 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-09-19 15:42:29 +0200 |
commit | 65b5116220a8ebf8a260716152409aa05377aacc (patch) | |
tree | ac2263332dcec1208f0baf81896cd39a23ae289f /src/login/logind.c | |
parent | f981b9c5be32a199bce6335196d986f5b7e45ba6 (diff) |
logind: if a lid-switch lock was taken while the lid was closed, recheck lid status when the lock is released
Diffstat (limited to 'src/login/logind.c')
-rw-r--r-- | src/login/logind.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/login/logind.c b/src/login/logind.c index e22f68d237..14c83551b9 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -1506,6 +1506,26 @@ int manager_startup(Manager *m) { return 0; } +static int manager_recheck_buttons(Manager *m) { + Iterator i; + Button *b; + int r = 0; + + assert(m); + + HASHMAP_FOREACH(b, m->buttons, i) { + int q; + + q = button_recheck(b); + if (q > 0) + return 1; + if (q < 0) + r = q; + } + + return r; +} + int manager_run(Manager *m) { assert(m); @@ -1519,6 +1539,9 @@ int manager_run(Manager *m) { if (manager_dispatch_delayed(m) > 0) continue; + if (manager_recheck_buttons(m) > 0) + continue; + if (dbus_connection_dispatch(m->bus) != DBUS_DISPATCH_COMPLETE) continue; |