https://gitlab.synchro.net/main/sbbs/-/commit/0b7911f4534019ede60ff740
Added Files:
src/doors/termgfx/test/test_termgfx_termio_tiercycle.c
Modified Files:
src/doors/syncscumm/door/syncscumm.cpp src/doors/termgfx/termgfx_termio.c termgfx_termio.h src/doors/termgfx/test/unit_termgfx_termio.sh
Log Message:
termgfx: let a door step the graphics tier, and give syncscumm F4
SyncTERM is the only terminal that reaches the JXL tier, which makes it the only one that never draws a sixel -- including the sixel code written specifically FOR SyncTERM, where a dirty box carries no colour registers because they persist, so a palette change has to ride a delta on the first
box. That path could only run on a SyncTERM talked out of JXL, and nothing could do the talking. It has been shipped and measured but never once
exercised live on the terminal it exists for.
termgfx_termio_tier_cycle() steps to the next tier the client can actually
draw and invalidates the frame cache, because the client is holding a
picture drawn by the other encoder and the two share none of the state a
dirty patch assumes. A no-op where only one tier is available, rather than
a confusing reset.
It is exposed for the door to bind, NOT taken as a hotkey here. The obvious
key is F4 -- it is what the sibling doors use -- but syncrpg already spends
F4 on its resolution toggle and prints it on its help card, and this file is shared with syncrpg. Ctrl-S can be global because no door wants it; this one has an owner already. Taking it here would have broken syncrpg silently.
syncscumm binds F4 and stops forwarding it to ScummVM, swallowing both
edges so a release cannot reach the engine alone. F4 is not a ScummVM global (F5 is the menu); if a game turns out to want it, the note there says to
move the binding rather than forward it, or the tier becomes unreachable
again.
Co-Authored-By: Claude Opus 5 (1M context) <
noreply@anthropic.com>
--- SBBSecho 3.37-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)