The libcanberra event-sound-cache that stores the resolved paths for
sound names can get stuck with the fallback sound (bell) after trying to
play an invalid symlink, such as can happen after updating to 43 which
removed some sounds which might have been selected as alert sounds
before.
Neither changing the symlink nor touching the theme directory seems to
invalidate that cache, but touching the sounds directory does.
This now updates the sounds directory mtime before triggering purging
the sound sample cache in the sound server via g-s-d so libcanberra will
load the correct sounds when repopulating the sample cache afterwards.
Closes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2277
The sound plugin of gnome-settings-daemon which flushes the pulseaudio
sample cache does non-recursive monitoring of the sounds directory. If
the custom theme directory used for switching between bell sounds
already exists due to previous bell sound changes, subsequent changes
within that directory will not be noticed. The old bell sample will thus
remain in the cache until the next session restart. Avoid this problem
by manually updating the modification time of the directory.
The alternative solution of adding recursive monitoring to the sound
plugin would require significantly more complicated code as there is no
support for this in glib itself. Given that sound themes never really
caught on and there is an ongoing discussion of removing support for
them entirely, going with this simple solution seems like the better
choice.
Fixes: https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/issues/681