summaryrefslogtreecommitdiff
path: root/src/gui/deck.zig
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-29 08:17:38 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:16 -0300
commit6f7c79650857da578b9e6f8c49c772eb7c40bcae (patch)
treed5e9dcfe134f67d497dfbb4b31a64811b1f6d345 /src/gui/deck.zig
parentab668719385c94df3e274f71cb744f5917c1da7e (diff)
downloadpardes-6f7c79650857da578b9e6f8c49c772eb7c40bcae.tar.gz
pardes-6f7c79650857da578b9e6f8c49c772eb7c40bcae.zip
GUI goldens settle on the window's idle, not two captures that agree
test/gui_golden.py hashed a scene once two captures 400 ms apart agreed; on a loaded machine a slow frame agreed with itself before the scene's change landed and every later hash moved up a scene. A test window now writes a status file into its capture directory each loop step (gui.zig writeTestStatus: step, frames captured, idle — nothing owes a frame, nothing moves, nothing waits on the core's clock), and the harness waits for an idle step two past the one current when it asks: a 9P write has been served by then, so the frame is the scene's. Two things kept a window from ever going idle, both fixed: - Look-hover re-armed forever: resting on a word with nothing to open, the hover wait ran its two frames, found nothing, cancelled, and the next present's pointer refresh started it again: a frame every other frame for as long as the pointer rested there, live too (CPU). The place last refused is remembered (Pardes.look_hover_refused) until the pointer moves off it. - The virtual clock moved only on a wait that timed out, so a steady trickle of events held it still; it now moves to the core's wake too when an event cut the wait short and nothing owes a frame. Captures go to a directory of their own, outside the session's (a file written there every frame is a change in the directory its panes look at). All 17 goldens match the file as recorded at oooopqyv; eight runs, five alongside a ReleaseFast build and three with all 16 cores saturated (load 13-19), were byte-identical, 14 s a run unloaded (was ~30). Tests: the resting pointer lets the core go idle.
Diffstat (limited to 'src/gui/deck.zig')
0 files changed, 0 insertions, 0 deletions