diff options
author | Max Kellermann <max@duempel.org> | 2015-10-26 16:29:07 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2015-10-26 16:29:07 +0100 |
commit | ac61d43720393803cb3f6bc5c74aea588e1ca68d (patch) | |
tree | 1e2561805fde1bf7919e273d9b13145b34e6c8d0 | |
parent | 1958f78cc1bd47ce1c9b57db41194f85aed942ab (diff) | |
download | mpd-ac61d43720393803cb3f6bc5c74aea588e1ca68d.tar.gz mpd-ac61d43720393803cb3f6bc5c74aea588e1ca68d.tar.xz mpd-ac61d43720393803cb3f6bc5c74aea588e1ca68d.zip |
output/Command: flush the mixer cache when enabling/disabling output
Fixes mixer lag (http://bugs.musicpd.org/view.php?id=4425).
Diffstat (limited to '')
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | src/output/OutputCommand.cxx | 8 |
2 files changed, 10 insertions, 0 deletions
@@ -5,6 +5,8 @@ ver 0.19.11 (not yet released) - ffmpeg: fix crash due to wrong avio_alloc_context() call * encoder - flac: fix crash with 32 bit playback +* mixer + - fix mixer lag after enabling/disabling output ver 0.19.10 (2015/06/21) * input diff --git a/src/output/OutputCommand.cxx b/src/output/OutputCommand.cxx index 6afb70cf1..e6b8a8e7f 100644 --- a/src/output/OutputCommand.cxx +++ b/src/output/OutputCommand.cxx @@ -30,6 +30,7 @@ #include "Internal.hxx" #include "PlayerControl.hxx" #include "mixer/MixerControl.hxx" +#include "mixer/Volume.hxx" #include "Idle.hxx" extern unsigned audio_output_state_version; @@ -47,6 +48,11 @@ audio_output_enable_index(MultipleOutputs &outputs, unsigned idx) ao.enabled = true; idle_add(IDLE_OUTPUT); + if (ao.mixer != nullptr) { + InvalidateHardwareVolume(); + idle_add(IDLE_MIXER); + } + ao.player_control->UpdateAudio(); ++audio_output_state_version; @@ -70,6 +76,7 @@ audio_output_disable_index(MultipleOutputs &outputs, unsigned idx) Mixer *mixer = ao.mixer; if (mixer != nullptr) { mixer_close(mixer); + InvalidateHardwareVolume(); idle_add(IDLE_MIXER); } @@ -94,6 +101,7 @@ audio_output_toggle_index(MultipleOutputs &outputs, unsigned idx) Mixer *mixer = ao.mixer; if (mixer != nullptr) { mixer_close(mixer); + InvalidateHardwareVolume(); idle_add(IDLE_MIXER); } } |