refactor(input): own pointer and callback lifetime
Move camera pointer, framebuffer resize, and retained/devtools input edges behind focused reversible owners. Preserve input priority while making shutdown deactivate callbacks before live-session retirement and retry physical detach without stranding transport teardown.
This commit is contained in:
parent
d09e246d3a
commit
8b8afeefa3
42 changed files with 4029 additions and 461 deletions
18
CLAUDE.md
18
CLAUDE.md
|
|
@ -113,7 +113,7 @@ and the final two-client portal-out/materialization observer flow are
|
|||
user-gated. Deterministic world-lifecycle automation protects fresh login,
|
||||
outdoor/world-edge/dungeon travel, same-location revisit, exact graceful
|
||||
disconnect, and uncapped fresh-process reconnect with JSON/PNG artifacts.
|
||||
Release builds; 7,341 tests pass / 5 skip.
|
||||
Release builds; 7,477 tests pass / 5 skip.
|
||||
|
||||
**Active prerequisite before new M4 subsystem work:** continue the
|
||||
behavior-preserving `GameWindow` decomposition reconciled on 2026-07-21.
|
||||
|
|
@ -125,15 +125,19 @@ second GUID dictionary. Slices 5–7 are complete: landblock presentation,
|
|||
update-frame orchestration, and render-frame orchestration all have typed
|
||||
owners. `GameWindow.OnUpdate` and `GameWindow.OnRender` are one-handoff methods;
|
||||
the frame owners have no direct window or anonymous callback-bag ownership.
|
||||
Slice 8 checkpoints A–D are also complete: dead host residue is removed,
|
||||
Slice 8 checkpoints A–E are also complete: dead host residue is removed,
|
||||
native-window callback intake has reversible lifetime ownership, and
|
||||
`LiveSessionHost` owns reset/binding composition over the sole canonical
|
||||
session controller. `WorldEnvironmentController` solely owns the clock, DAT
|
||||
sky/day group, weather, synchronization, and AdminEnvirons state. `GameWindow`
|
||||
is 4,330 raw lines / 192 fields / 67 methods, down 11,393 lines (72.5%) from
|
||||
the 15,723-line campaign baseline. The 7,419-test
|
||||
Release suite, 315.6-second lifecycle/reconnect gate, and 395.2-second
|
||||
synchronized nine-stop soak pass. Slice 8 checkpoints E–L—input/resize, action
|
||||
sky/day group, weather, synchronization, and AdminEnvirons state.
|
||||
`CameraPointerInputController` and `FramebufferResizeController` now own raw
|
||||
camera input/focus/scroll and physical framebuffer publication. Silk,
|
||||
dispatcher, retained-UI, and devtools device edges are reversible,
|
||||
transactional, and terminal after disposal; live-session retirement precedes
|
||||
physical callback removal. `GameWindow` is 4,266 raw lines / 194 fields / 65
|
||||
methods, down 11,457 lines (72.9%) from the 15,723-line campaign baseline. The
|
||||
7,477-test Release suite, 315.6-second lifecycle/reconnect gate, and
|
||||
395.2-second synchronized nine-stop soak pass. Slice 8 checkpoints F–L—action
|
||||
routing, settings, resource ownership, ordered composition,
|
||||
retryable shutdown, soak snapshots, and final connected gates—remain active.
|
||||
See `docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md` and
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue