greeter: fix hanging when unlocking via loginctl over KDE Connect

fail_delay used to sleep in the thread, which blocks the screen locker from quiting when another unlock attempt succeeds. This records the next attempt allowed time point in each worker and checks it in PamWorker::authenticate() to make sure a previous failing worker doesn't affect other successful attempts to unlock the screen.

How to reproduce:

  1. Meta + L
  2. Move the mouse so the password input field appears (IMPORTANT)
  3. Run unlock via KDE connect
  4. Observe frozen screen/black screen if mouse is moved

Amends 081efa76 (@akasure)

BUG: 506343 BUG: 505987 FIXED-IN: 6.5.4

Edited by Fushan Wen

Merge request reports

Loading