Files
moonwell-client-core/docs
Sam Sung a6dbffd8e7 Windows audio keeps COM's shared apartment for cpal's one enumerator (#2018)
On Windows, `benilla-app`'s tests died with an access violation (`0xc0000005`) at the second test that opens the audio device. cpal 0.17.3 keeps one device enumerator for the process, made in the first caller's single-threaded COM apartment; when that thread exits, its `CoUninitialize` unloads the DLLs behind it, and the next call goes through a dead vtable (RustAudio/cpal#1302, open, the same `windows-latest` fault).

Every way into cpal now goes through one `host()`, which on Windows first anchors COM's shared multithreaded apartment for the process (`CoIncrementMTAUsage`, the pattern SDL uses) and joins it to build the enumerator, so no thread's exit can tear it down.

Test: two joined threads each read the device and agree.

Fixes #1984

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 05:51:46 +07:00
..