From 9748bca006cd2498c4c0f2730d8789c667bda52b Mon Sep 17 00:00:00 2001 From: srdusr <99972264+srdusr@users.noreply.github.com> Date: Wed, 30 Oct 2024 23:52:00 +0200 Subject: Add srdwm's own native session-lock screen (blur, PAM auth) A real ext-session-lock-v1 implementation drawn by the compositor itself, not a hand-off to an external locker process: a live-blurred background, PAM authentication on a background thread, and its own config surface (lock_config.rs) rather than hardcoded appearance. --- crates/wayland/src/lock.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'crates/wayland/src/lock.rs') diff --git a/crates/wayland/src/lock.rs b/crates/wayland/src/lock.rs index ccdea98..828fe98 100644 --- a/crates/wayland/src/lock.rs +++ b/crates/wayland/src/lock.rs @@ -44,6 +44,18 @@ pub(crate) struct SessionLock { /// Outputs that have presented a client-content-free frame since the /// lock request, keyed the same way. pub(crate) presented: HashSet, + /// `Some` while srdwm is its own locker - see `native_lock.rs`'s + /// module doc comment for why this is a separate mode from the fields + /// above rather than folded into them: those exist for an *external* + /// locker client talking `ext-session-lock-v1`; this is srdwm drawing + /// and authenticating its own lock UI directly, with no client + /// surface involved at all. The two are mutually exclusive by + /// construction - `srd dispatch lock` never creates a `LockSurface`, + /// and nothing here stops a *real* external locker from also + /// connecting, but nothing in this session's scope needed to reconcile + /// that edge case, and `locked` alone still gates input/rendering + /// regardless of which mode set it. + pub(crate) native: Option, } impl CompState { -- cgit v1.2.3