pipewire-pulse does not call registered stream moved handler
- PipeWire version (
pipewire --version): 0.3.51
- Distribution and distribution version (
/etc/os-release): Fedora Linux 36 (Thirty Six)
- Desktop Environment: GNOME 3
- Kernel version (
uname -r): 5.17.9-300.fc36.x86_64
Description of Problem:
I maintain an application called FreeDV (https://github.com/drowe67/freedv-gui/) that currently uses PulseAudio. As part of its audio configuration, there is code that registers a static method
pa_stream_set_moved_callback() (location here for reference). The intention is to be able to auto-update its audio configuration in response to stream moves.
Unfortunately, when one of the sources or sinks that FreeDV uses is updated by another application (e.g. pavucontrol), this callback is not called and thus its audio configuration isn't adjusted.
Steps to Reproduce:
- Start FreeDV and pavucontrol.
- Go to Tools->Audio Config in FreeDV and assign audio devices in the Receive tab. Push OK to save.
- Push Start to start decoding audio.
- Using pavucontrol, change one of the sound devices that FreeDV is using to a different source or sink.
PulseAudioDevice::StreamMovedCallback_() is not called by pipewire-pulse. This has been confirmed by adding additional debugging output to that method (which doesn't get printed to stdout/stderr).
PulseAudioDevice::StreamMovedCallback_() is called and FreeDV's audio configuration is updated.
Additional Info (as attachments):
pw-dump > pw-dump.log: pw-dump.log