output/control: always close the `AudioOutputSource` in `RELEASE`

Fixes a crash bug with `always_on` outputs which occurs because the
`AudioOutputSource` still has a pointer to an outdated `MusicChunk`.

Fixes #415
This commit is contained in:
Max Kellermann 2018-11-12 12:21:59 +01:00
parent e097fef79e
commit 5eaf2b8fc3
2 changed files with 7 additions and 2 deletions

2
NEWS
View File

@ -6,7 +6,7 @@ ver 0.21.2 (not yet released)
- ffmpeg: fix broken sound with certain codecs - ffmpeg: fix broken sound with certain codecs
* output * output
- alsa: fix high CPU usage with dmix - alsa: fix high CPU usage with dmix
- httpd: fix two crash bugs - httpd: fix three crash bugs
* mixer * mixer
- alsa: fix more rounding errors - alsa: fix more rounding errors
* fix zlib support * fix zlib support

View File

@ -467,7 +467,12 @@ AudioOutputControl::Task() noexcept
if (always_on) { if (always_on) {
/* in "always_on" mode, the output is /* in "always_on" mode, the output is
paused instead of being closed */ paused instead of being closed;
however we need to close the
AudioOutputSource because its data
have been invalidated by stopping
the actual playback */
source.Close();
InternalPause(); InternalPause();
} else { } else {
InternalClose(false); InternalClose(false);