• src/doors/termgfx/sst_plat.c sst_plat.h termgfx_termio.csrc/doors/term

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Sunday, July 19, 2026 18:26:49
    https://gitlab.synchro.net/main/sbbs/-/commit/e07e848092877fecbb7d5e67
    Added Files:
    src/doors/termgfx/sst_plat.c sst_plat.h termgfx_termio.c
    Modified Files:
    src/doors/termgfx/CMakeLists.txt
    Log Message:
    termgfx: move syncscumm's sst_io.c into the shared termgfx_termio.c

    Relocate the terminal-session engine (fd resolution, output-staging
    FIFO, probe/reply parser, present/pacing bookkeeping, input-event queue
    and the audio output seam) out of syncscumm's door and into libtermgfx,
    so syncscumm and the coming syncrpg door share one canonical renderer/input/socket engine. This is a pure move: no behavior change, byte-identical wire output (verified separately against the captured
    baseline).

    git mv door/sst_io.c -> termgfx/termgfx_termio.c and rename only the
    PUBLIC C symbols to the shared namespace: sst_io_ -> termgfx_termio_,
    SST_KEY_ -> TERMGFX_KEY_, SST_EV_ -> TERMGFX_EV_, sst_input_event_t -> termgfx_input_event_t, sst_ev_type_t -> termgfx_ev_type_t, and the
    modifier bits SST_MOD_* onto keymode.h's existing TERMGFX_MOD_* (the
    event's mods field is a producer/consumer-private bitmask, so the
    different bit values are opaque). File-local static helpers keep their
    names. Strings, env-var names (SYNCSCUMM_SIXELOUT/_TRACE/_AUDIODUMP...), SBBSDATA paths, and every numeric constant are unchanged.

    The framebuffer geometry and audio-tuning defaults the shared header deliberately did not export (SST_AUDIO_RATE/_CHUNK_MS/_PREBUFFER_CHUNKS/ _HEADROOM, and SST_FB_W/H) are re-declared internal to the .c with their
    exact former values -- FB_W/H aliased to the header's TERMGFX_TERMIO_FB_*
    so the value has one source.

    Bring sst_plat.{c,h} -- the module's pure platform layer (monotonic
    clock, non-blocking sockets, isatty/getpid, no ScummVM coupling) that termgfx_termio depends on -- along into termgfx too, so the library is self-contained and a shared lib never reaches into syncscumm/door for
    its own platform header. Both new sources join the termgfx CMake target.
    The door's own use of these headers is repointed when syncscumm is wired
    onto the module in the next step.

    Hand-formatted files: uncrustify deliberately not run, to preserve the byte-identical move.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net