lock: hoist the lock out of the Config.ready loaders so a reload can adopt
PanelLoader is a LazyLoader gated on Config.ready, behind a second one. On reload both are shut when quickshell propagates, so LazyLoader has no item to hand its successor and the new WlSessionLock never adopts the live compositor lock. Lock is a direct child of ShellRoot now, as the boot-order doc already asked. Ungated means Config may not have loaded, and touchKeypad reads false from the adapter defaults — which would bind the desktop surface on the phone and cannot be changed once the lock is active. The choice rides the reload too.
This commit is contained in:
parent
1eb50a1817
commit
5c618f1514
3 changed files with 66 additions and 2 deletions
|
|
@ -47,7 +47,22 @@ Scope {
|
|||
PanelLoader { component: Background {} }
|
||||
PanelLoader { component: Cheatsheet {} }
|
||||
PanelLoader { extraCondition: Config.options.dock.enable; component: Dock {} }
|
||||
PanelLoader { component: Lock {} }
|
||||
// Lock is NOT here. It is a direct child of ShellRoot in shell.qml.
|
||||
//
|
||||
// It lived behind this LazyLoader until 2026-07-31, and that is the whole
|
||||
// of TASK-48's shell half. `PanelLoader` is `active: Config.ready`, and
|
||||
// this family sits behind a second `Config.ready` LazyLoader — so on a
|
||||
// scene reload both gates are shut at the moment quickshell propagates
|
||||
// reloads. `LazyLoader::onReload` finds `mItem == nullptr`, skips
|
||||
// propagation entirely, and incubates a fresh Lock milliseconds later with
|
||||
// no predecessor. The new `WlSessionLock` therefore never adopts the
|
||||
// outgoing one's compositor lock, and the reload either crashes on the
|
||||
// denied re-acquire or sends `unlock_and_destroy` and drops the session.
|
||||
//
|
||||
// No amount of `reloadableId` fixes that: the object was not there to be
|
||||
// matched. `session-authority-boot-order.md` Phase A.1 already called for
|
||||
// this hoist, for the adjacent reason — nothing may render before the lock
|
||||
// decision. `BootBloom` is hoisted in shell.qml on exactly this argument.
|
||||
PanelLoader { component: MediaControls {} }
|
||||
// Desktop notifications belong in the right-hand notification panel.
|
||||
// Keeping a transient popup surface loaded on desktop let some shell
|
||||
|
|
|
|||
Loading…
Reference in a new issue