At Mon, 25 Jun 2007 10:06:18 +0100,To be exact the OSS should not even stop the device when a xrun occurs. Instead it should keep playing silence until the application writes more output data and to discard the oldest recorded data when an overrun occurs. This is more effective than stopping and restarting the device.
Alan Cox wrote:
If it is native ALSA driver then it will restart after each underrunOSS should autorestart on underrun and just moan about overruns and drop
and overrun. It is the applications job to do this, alsa-lib provides
all support for this. I have no idea of OSS and OSS emulation in ALSA.
bits. So if it's not following that behaviour he is IMHO correct for the
OSS emulation case.
I think he is right in the case of read (although I don't remember his
post as my buffer overran). The playback is automaically reset and
restarted at underrun.
But, the patch there is wrong. It should handle -EPIPE, which means
XRUN, while -ESTRPIPE means the suspend state.