fix: restore SDL volume to MAX after device switch

Remove dead 'currentVolume' variable that was never written to, causing
SwitchDevice to always restore volume to 0 after switching audio devices.

- Remove currentVolume from package state
- SwitchDevice now sets mix.MAX_VOLUME after reopening device
- GetVolume128 now queries SDL directly instead of reading stale variable
- Add unit tests for parseSinks, parseSinkLine, and ConvertVolume
- Add changelog.txt tracking all audio bug fixes
This commit is contained in:
NeilClack
2026-07-10 13:56:06 -05:00
parent fd10201f75
commit 2bcb36669f
4 changed files with 221 additions and 10 deletions
+37
View File
@@ -0,0 +1,37 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/).
## [Unreleased]
### Fixed
- Audio volume silently zeroed after switching output devices
- Device switch not persisted to database across restarts
- Device restore path passes invalid device name to SDL
- Stop() no-op when audio toggled off mid-playback
- Active device highlight incorrect when using default device
- Play() deadlocks when called before device is open
### Added
- Human-readable audio device names (Built-in Speakers, HDMI/TV/Monitor)
- Unit tests for mixer package (parseSinks, parseSinkLine, ConvertVolume)
### Changed (Major Refactors)
- Mixer package: inject audio backend dependencies for testability
- Mixer package: extract wpctl calls behind an interface
## [Audio Bugs v0.1] - 2026-07-10
### Fixed
- Audio volume silently zeroed after switching output devices
- Device switch not persisted to database across restarts
- Device restore path passes invalid device name to SDL
- Stop() no-op when audio toggled off mid-playback
- Active device highlight incorrect when using default device
- Play() deadlocks when called before device is open
### Added
- Human-readable audio device names (Built-in Speakers, HDMI/TV/Monitor)
- Unit tests for mixer package (parseSinks, parseSinkLine, ConvertVolume)