Commit Briefs
cache audio_nfds()
ALSA' snd_pcm_poll_descriptors_count() can fail with -EPIPE after an underrun (e.g. after a pause), so we can't call it directly like this. It's also a bit sloppy to always call audio_nfds(), so instead save the (initial) value returned and pass it to the various functions. Issue reported and fix tested by phoebos (ben [at] bvnf [dot] space), thank you!
fix my email address
used @openbsd.org initially by mistake and got copied around in most files. Since this has nothing to do officially with the OpenBSD project, use my own email address.
split out sndio-specific parts to audio_sndio.c
This hides the libsndio bits behind a small audio_* API for which in the future we may provide multiple implementations.
retry on sio_revents failure due to EAGAIN
I've noticed that often during the suspend/resume cycle amused could die due to a "sndio hang-up" caused by an EAGAIN. This should prevent that and make sure we retry the operation.
allow to seek to the beginning with -1
if the computed seek was less than 0 it skips the seek. It's more useful to just rewind to the beginning.
use (a modified version of) kristaps' oconfigure
see GitHub issue #1
player_dispatch even when poll(2) doesn't tell us to
we may have some imsgs queued up for later consumption that would otherwise get delayed. This fixes for e.g. $ amused stop ; amused seek 90
implement seeking
This adds the internal management of the seeking, as well as the decoder backends bits.