fix: treat unlocking the session as user activity
SessionLockHandler::unlock clears the lock and schedules a render, but never tells IdleNotifierState that the user is there. Unlock paths that produce no input event -- fingerprint and smartcard readers -- therefore leave the idle clock running across the entire lock period, and it is already past its timeouts by the time the session is unlocked. The visible result is that the screen stays off after a successful unlock until the user moves the mouse or presses a key, or that the session locks itself again seconds after being unlocked. Notifying activity for every seat in unlock() resets the timers the same way an input event would. Drafted with AI assistance (Claude Code); the change was reviewed, built and tested by me on real hardware as described. Signed-off-by: chris-010 <10660568+chris-010@users.noreply.github.com>
This commit is contained in:
parent
314fc670a8
commit
04026259e0
1 changed files with 5 additions and 0 deletions
|
|
@ -46,6 +46,11 @@ impl SessionLockHandler for State {
|
||||||
let mut shell = self.common.shell.write();
|
let mut shell = self.common.shell.write();
|
||||||
shell.session_lock = None;
|
shell.session_lock = None;
|
||||||
|
|
||||||
|
let seats = shell.seats.iter().cloned().collect::<Vec<_>>();
|
||||||
|
for seat in &seats {
|
||||||
|
self.common.idle_notifier_state.notify_activity(seat);
|
||||||
|
}
|
||||||
|
|
||||||
for output in shell.outputs() {
|
for output in shell.outputs() {
|
||||||
self.backend.schedule_render(output);
|
self.backend.schedule_render(output);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue