This May was a very unproductive month for me, but I did something at least:
When the user selects a device for output in the GNOME sound settings application, the application moves current streams to the selected device, and in order to have consistent routing also for streams not currently playing, it overwrites all stream routing settings in PulseAudio’s stream-restore database. That’s pretty ugly and sometimes causes problems, but it was necessary in order to make the routing take effect immediately when selecting a new output device. PulseAudio doesn’t automatically move streams when changing the default sink. Or it didn’t in the past. In the upcoming 14.0 release streams will be automatically moved, so the GNOME sound settings application won’t need to do any stream moving and it doesn’t need to overwrite the stream-restore database. There’s still a problem: the database modifications done earlier will still have effect, and the effects can be pretty bad: for example, it was reported that after upgrading to the latest release candidate, GNOME’s audio test played to the wrong device. I made a heavy-handed fix: when upgrading to PulseAudio 14.0, all old per-stream routing settings will be forgotten. We can’t distinguish between valid per-stream routing settings and invalid settings that were done by the GNOME sound settings, so we had to decide between keeping the invalid settings or forgetting valid settings. Forgetting valid settings seemed like the less bad option. (Systems that don’t use GNOME can build PulseAudio without the “forget old settings” feature, so this is not forced on everyone.)
I reviewed the following patches last month:
- Simon Pilkington implemented the XDG base directory specification for loading the ALSA path configuration files. This will allow users to customize the path configuration without editing files under /usr/share. The patch only applies to the path configuration files, not to the closely related profile set files, but Simon plans to implement the same also for the profile set files.
- Felix Dörre made a patch that changes PulseAudio’s –check option so that instead of checking whether a pulseaudio process is running, a connection attempt is done. I rejected the patch, because changing option semantics is risky. People may be depending on the old documented behaviour (although in this case it’s possible that people would actually prefer a connection check in most cases, but there’s no way to know for sure).
- Rafał Mikrut made a patch that changes how the Meson build system figures out the PulseAudio version number. When building PulseAudio from a git checkout, the version number comes from git tags, and Rafał’s checkout apparently was missing the tags and the build failed. I rejected the patch, because it didn’t make sense to me to allow invalid version numbers.
This post was originally written on 2020-06-05, and first made available to my Patreon supporters. Speaking of Patreon – I’m using crowdfunding in an attempt to make it financially sustainable to continue my volunteer work as a PulseAudio maintainer. If you’d like to help, check out my Patreon page (or Liberapay).