_  _    __    ___  __    ___  _____  _  _
 ( \( )  /__\  / __)(  )  / __)(  _  )( \( )
  )  (  /(__)\( (__  )(__( (__  )(_)(  )  (
 (_)\_)(__)(__)\___)(____)\___)(_____)(_)\_)

The History of Hacking  ·  May 31 – June 2, 2026  ·  Carolina Beach, NC

Connect from your terminal: telnet naclconbbs.net 23  |  ssh naclconbbs.net -p 2222

  • src/xpdev/mixertest.csrc/xpdev/GNUmakefile Makefile targets.mk

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Fri Jul 17 21:23:33 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/d64877aed4b1d96d3acd3131
    Added Files:
    src/xpdev/mixertest.c
    Modified Files:
    src/xpdev/GNUmakefile Makefile targets.mk
    Log Message:
    xpdev: add mixertest, a headless regression test for the mixer

    Guards the xp_mixer_pull() gapless-hand-off fix in the previous commit:
    it drives the mixer directly with no audio device and asserts that a
    queued buffer ending part way through a pull hands off to its successor
    with no silent gap -- across two/three/N buffers, drain-to-empty, exact buffer/pull alignment and consumed state carried across pulls -- while
    the crossfade overlay still mixes its pair concurrently. Against the
    pre-fix mixer it reports failures and a nonzero exit; against the fix,
    zero.

    xpdev had no automated, self-checking test before this -- wraptest is interactive. Wired in following the wraptest pattern: "make tests" builds mixertest alongside the others, and "make test" builds and RUNS it
    (nonzero exit == failure) for CI. The recipe runs it through $(VALGRIND),
    which is empty by default -- a plain "make test" runs the binary directly
    -- and which CI sets to a valgrind command line where the leak checker is available.

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

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