AudioBalance v2.2.22 — Sleep/wake hang fix
What's fixed in v2.2.22
Critical: Sleep / lid-close hang
AudioBalance no longer freezes when you close the laptop lid or wake from sleep. Previously the WASAPI audio device handles became stale during suspend, causing the next capture call to block indefinitely inside Windows COM RPC — making the app appear frozen and impossible to close normally.
What changed under the hood:
- New
WM_POWERBROADCASThandler stops the audio engine cleanly before Windows suspends, so devices are released in a known-good state. - On resume, AudioBalance waits 2 seconds for
audiosrvto come back, then recreates the Shared Memory channel and restarts the audio engine. - A suspend-generation counter cancels stale resume timers if you sleep/wake rapidly (travel scenario).
"Cannot close the app" — fixed
- Removed the synchronous
taskkillcall on shutdown that was blocking the GUI thread for several seconds. AudioEngine::stop()no longer callsterminate()on threads holding COM state (was the actual deadlock).- Settings-mutex now has a 2-second timeout instead of waiting forever — a stuck peer process can no longer freeze the GUI on a button click.
Admin dashboard
- Beta-tester refresh now actually shows new registrations (was serving stale cached responses from browser + Cloudflare Edge).
- All admin endpoints send proper no-cache headers.
- Beta-tester list paginates through KV (was capped at 1000 testers).
Download
AudioBalance-2.2.22-Setup.exe — 57 MB
Upgrade
Just download and run the installer over your existing v2.2.21 install. Settings, license, and beta-tester status are preserved.
🤖 Built with Claude Code