diff --git a/NEWS b/NEWS index 23f2c41ff..4c36c9b5d 100644 --- a/NEWS +++ b/NEWS @@ -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 diff --git a/src/filter/plugins/ReplayGainFilterPlugin.cxx b/src/filter/plugins/ReplayGainFilterPlugin.cxx index 3c2f6b351..e89f4af69 100644 --- a/src/filter/plugins/ReplayGainFilterPlugin.cxx +++ b/src/filter/plugins/ReplayGainFilterPlugin.cxx @@ -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");