module/alsa: handle ALSA device disappearing

With this patch, a non-existing ALSA device is no longer considered a
fatal error. Instead, we keep retrying until we succeed.

Furthermore, if we have successfully opened the ALSA device, and it
then disappears, we a) no longer crash, or cause 100% CPU usage, and
b) try to re-connect to the device.

With this, we now handle e.g. USB soundcards being disconnected and
then re-connected. We should also handle pseudo devices, like pipewire
provides ones, when yambar is started before pipewire.

Closes #59
Closes #61
Closes #86
This commit is contained in:
Daniel Eklöf 2021-08-18 20:21:04 +02:00
parent 8b6b82f1e5
commit be6e714eb0
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
3 changed files with 126 additions and 12 deletions

View file

@ -22,11 +22,15 @@
(https://codeberg.org/dnkl/yambar/issues/84).
* river: support for the river-status protocol, version 2 (urgent
views).
* `online` tag to the `alsa` module.
### Changed
* bar: do not add `spacing` around empty (zero-width) modules.
* alsa: do not error out if we fail to connect to the ALSA device, or
if we get disconnected. Instead, keep retrying until we succeed
(https://codeberg.org/dnkl/yambar/issues/86).
### Deprecated
@ -37,6 +41,8 @@
compiled without the Wayland backend”_.
* Regression: `{where}` tag not being expanded in progress-bar
`on-click` handlers.
* `alsa` module causing yambar to use 100% CPU if the ALSA device is
disconnected (https://codeberg.org/dnkl/yambar/issues/61).
### Security