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:
- Meta + L
- Move the mouse so the password input field appears (IMPORTANT)
- Run unlock via KDE connect
- Observe frozen screen/black screen if mouse is moved
BUG: 506343 BUG: 505987 FIXED-IN: 6.5.4
Edited by Fushan Wen