• src/doors/syncmoo1/syncmoo1_io.c

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Sun Jul 12 05:11:38 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/4a11464eb46b2fb3fbf317c7
    Modified Files:
    src/doors/syncmoo1/syncmoo1_io.c
    Log Message:
    syncmoo1: clear on geometry change, and center with a fractional cell

    Two rendering bugs on a maximized Windows Terminal, both latent in the sibling doors too (only syncretro was fixed, via the shared termgfx_geom_center_ex).

    The black box. Nothing wiped the screen when the geometry changed. The door starts on the default 80x25/640x400 assumption; when the terminal's
    grid/canvas
    probe reply lands mid-intro it recomputes a different image position and size, but the previous frame's footprint -- and 1oom's pre-sixel "Loading Master of Orion" text -- were never cleared, so a stale black rectangle sat in the background behind the new frame. Emit ESC[2J when the drawn geometry differs from the last frame sent (guarded off the first frame, which term_enter
    already
    cleared). Same fix the sibling doors' tier-change path applies; here the trigger
    is the probe-driven geometry change.

    The off-center image. Centering used cw = canvas / grid_cols, an integer that truncates. On a window whose pixels-per-cell isn't an exact 8x16, the lost fraction of a cell put the image a cell or two off ("kind of centered"). Adopt termgfx_geom_center_ex with the true fractional cell so the column/row round correctly.

    Verified: the geometry-change ESC[2J now fires on the wire when a probe reply changes the grid, and the door renders correctly on a real WT sixel session (user-confirmed). ctest 4/4.

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