Commit e2d4654e authored by Max Kellermann's avatar Max Kellermann

filter/ReplayGain: invoke the MixerListener after volume change

This ensures that Partition::OnMixerVolumeChanged() invokes MixerMemento::InvalidateHardwareVolume(), clearing the cached volume level. Closes https://github.com/MusicPlayerDaemon/MPD/issues/1526
parent 2b8f1170
......@@ -3,6 +3,8 @@ ver 0.23.9 (not yet released)
- cdio_paranoia: add options "mode" and "skip"
* decoder
- ffmpeg: support FFmpeg 5.1
* filter
- replay gain: fix delayed volume display with handler=mixer
* output
- pipewire: set app icon
* fix bogus volume levels with multiple partitions
......
......@@ -23,6 +23,8 @@
#include "ReplayGainInfo.hxx"
#include "ReplayGainConfig.hxx"
#include "mixer/MixerControl.hxx"
#include "mixer/MixerInternal.hxx"
#include "mixer/Listener.hxx"
#include "pcm/AudioFormat.hxx"
#include "pcm/Volume.hxx"
#include "util/ConstBuffer.hxx"
......@@ -171,9 +173,11 @@ ReplayGainFilter::Update()
try {
mixer_set_volume(mixer, _volume);
/* TODO: emit this idle event only for the
current partition */
idle_add(IDLE_MIXER);
/* invoke the mixer's listener manually, just
in case the mixer implementation didn't do
that already (this depends on the
implementation) */
mixer->listener.OnMixerVolumeChanged(*mixer, _volume);
} catch (...) {
LogError(std::current_exception(),
"Failed to update hardware mixer");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment