• src/doors/syncdoom/i_termmusic.c syncdoom.c

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Wed Jul 1 02:20:56 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/7108fa623c0935201f64320d
    Modified Files:
    src/doors/syncdoom/i_termmusic.c syncdoom.c
    Log Message:
    syncdoom: fix RTT stale-reject ratchet + audio/frame telemetry

    - RTT: pass stale_reject=0 to termgfx_rtt_sample. That filter dropped any DSR
    round-trip below EMA/3 to reject "absurdly low" late replies -- but it created
    a one-way ratchet: once a slow JXL frame spiked the smoothed RTT, every good
    low sample was then below EMA/3 and discarded, so it could never recover
    (observed latched ~725ms on a ~20ms LAN, which also forced the synthetic
    turn / "evdev/syn"). Reclaimed-frame replies are already dropped above via
    g_dsr_stale, so the filter guarded nothing here. Matches SyncDuke, which runs
    the same shared function with stale_reject=0 and tracks the true link.
    - Telemetry: the music line now splits render=<transcode ms> xfer=<encode+cache+
    upload ms> so a load stall's cause is unambiguous; a frame-stall watchdog logs
    when emit_frame runs long (>500ms, a slow encode); and dlog gains a [+ms]
    prefix (the BBS log only stamps to the second).

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

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