X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flogin%2Flogind.c;h=14c83551b9a4cc3be9ec37d78200b22bf48c5397;hp=e22f68d23761ba31adac1eeef23b5c8105a2ca04;hb=65b5116220a8ebf8a260716152409aa05377aacc;hpb=f981b9c5be32a199bce6335196d986f5b7e45ba6 diff --git a/src/login/logind.c b/src/login/logind.c index e22f68d23..14c83551b 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;