renderer: test that a frame at the shown size goes through main until the embedder reports its commit; one drop rule
Merged
LA
2d ago+42+42+01234567890123456789-13-13-01234567890123456789
Summary
Follow-up to #75 (its independent review, SHIP at 5f97f6389, findings 1 and 2; no behavior change):
- Test: a frame kept for the embedder at the size the layer already shows, before the embedder reports its commit (
setSurfaceOffMainrefuses it then), goes through main and shows. It must never be skipped:hostFrameanswers SHOWN for it, so nothing else would present it, and its content would wait for the next frame. IOSurfaceLayer.embedderDropsis the one rule thatsetSurfaceCallbackandembedderShowsFrameLockedboth use (it was written twice).
Findings 3 (a second Core Animation lock per new-size frame: optional, only if cmux's A/B shows the wait) and 4 (a generation race from before #75, after A->B->A) are not in this PR.
Testing
Scratch branches that only narrow the workflow's test filter to host present: (never merged):
- Mutant (the shown-size check removed from the skip path only): https://github.com/manaflow-ai/ghostty-next/actions/runs/41922825221: the new test fails with
expected 1, found 0; 109/110 pass. - Green: https://github.com/manaflow-ai/ghostty-next/actions/runs/41922829593: 110/110 tests passed, lib-vt 97/97 tests passed.
Observed / Not run
- Observed: the runs above;
zig fmt --checkandzig ast-check. - Not run: nothing else; no cmux pin move is needed for this change.
Changelog
none