If audio interrupts are missed (as this happens on some MP systems
authorratchov <ratchov@openbsd.org>
Fri, 6 Aug 2010 06:52:17 +0000 (06:52 +0000)
committerratchov <ratchov@openbsd.org>
Fri, 6 Aug 2010 06:52:17 +0000 (06:52 +0000)
commit0dc33e9bc0be8a056e958a4f778ebd00ae2355a6
tree96d1cbe8090ccd540840b79cf6144ee865cc6e6f
parent84940f959f176bc4b40dd4a567e4c8a6192c25ef
If audio interrupts are missed (as this happens on some MP systems
now), play and record directons may be out of sync, and since the play
direction is used as clock source, we may end up with data ariving
_before_ the time it was recorded. This breaks the sndio ``device
model'' and most full-duplex apps relying on it, starting with aucat
in its default mode.

Workaround this by using the direction that's ahead as clock source,
ensuring that recorded data never arrives before the clock tick it was
recorded. This prevents apps from crashing but won't fix stuttering
caused by missed interrupts.

ok deraadt@
lib/libsndio/sun.c