pv-runtime: Use a closer match for 99-pulseaudio-default.conf
pcm.!default pulse
assumes that a device named pulse
already exists
in the configuration (which it might, but equally it might not) and
overwrites (because of the !
) the definition of the default
device
with an alias for pulse
, which could be written as
pcm_devices["default"] = pcm_devices["pulse"]
in a somewhat more conventional language.
In contrast to that, pcm.!default { type pulse }
overwrites the
definition of the default
device with a newly-defined device whose
type is pulse
, more like this pseudocode:
pcm_devices["default"] = new PcmDevice(type="pulse")
The latter is what 99-pulseaudio-default.conf.example
actually does,
and therefore what the fdo runtime's 99-pulseaudio-default.conf
actually does (because it's just a copy of
99-pulseaudio-default.conf.example
, see
https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/commit/870889cdde734557298b8e0e4506e275cacb4f90
for the precise implementation).
In pressure-vessel we write this to /etc/asound.conf
rather than into
/etc/alsa/conf.d/
because very old versions of libasound like the one
in Steam Runtime 1 'scout' only supported the former and not the latter,
but otherwise we intend to mimic what the fdo runtime does, so let's
mimic it a little closer. This should make games and other programs
that output via libasound, like Shadowrun Returns and aplay
, more
reliable in the container.
One other minor divergence from 99-pulseaudio-default.conf.example
is that we don't set the human-readable name
Default ALSA Output (currently PulseAudio Sound Server)
on the
device, which seems a bit much for a targeted fix.
Thanks: Nozomi Miyamori
Resolves: https://github.com/ValveSoftware/steam-runtime/issues/623
Untested. To test this, we need to use a game or program inside the container that will output via libasound, without going like a higher-level middleware library like SDL, OpenAL or FMod: perhaps an aplay
binary copied from the corresponding Debian release into ~/tmp
, or maybe Shadowrun Returns (which is the reason we added this in the first place).