On Tue, 23 Nov 2010, pl bossart wrote:
After rethinking, I believe that the right fix should be to add the 'snd_pcm_mmap_capture_avail(pcm)' to the sd variable - delay(slave) - for the capture direction. You should not bother with avail_update or the slave avail values. The avail_update() capture loop just copied samples from the producer (slave) to the consumer (pcm). It means that the avail becomes lower for the producer (slave) and is increased for the consumer (pcm). The delay(slave) already contains the avail(slave) value.
So, the result should be 'delay(slave) + mmap_capture_avail(pcm)'.
The attached patch implements your recoomendation and makes error messages go away in PulseAudio.
I applied your patch to the alsa-lib repo. Thank you for discovering and testing.
Jaroslav
----- Jaroslav Kysela perex@perex.cz Linux Kernel Sound Maintainer ALSA Project, Red Hat, Inc.