On Thu, Feb 13, 2003, Jaroslav Kysela wrote: > On Mon, 10 Feb 2003, Arnaud de Bossoreille de Ribou wrote: > > > So the bug looks like a signedness problem since sw_ready is unsigned > > and there is a while(sw_ready > 0), which explain the constant delay, > > next in the "snd_emu10k1_fx8010_playback_transfer" function. > > > > So the emu10k1.patch file attached fixes the problem and seems not to > > introduce new ones. > > Please, could you try this patch, if it also fixes your problem? Thanks. > > > Index: emufx.c > =================================================================== > RCS file: /cvsroot/alsa/alsa-kernel/pci/emu10k1/emufx.c,v > retrieving revision 1.26 > diff -u -r1.26 emufx.c > --- emufx.c 31 Jan 2003 15:21:03 -0000 1.26 > +++ emufx.c 13 Feb 2003 20:29:55 -0000 > @@ -532,7 +532,7 @@ > if (diff) { > if (diff < -(snd_pcm_sframes_t) (runtime->boundary / 2)) > diff += runtime->boundary; > - pcm->sw_ready += diff; > + frames += diff; > } > pcm->sw_ready += frames; > pcm->appl_ptr = appl_ptr + frames; > > Jaroslav
It doesn't. sw_ready is negative (or above 2^31 as you like). I think it has nothing to do with runtime->boundary since the 2 appl_ptr are very close. The difference is always one period but I wonder why runtime->control->appl_ptr is above pcm->appl_ptr. Is this because the hardware has played one period that it shouldn't ? On the other hand if the difference is really always of one period the fix consists in conditioning the diff calculation with a "if(frames != 0)" so that sw_ready never reaches its lower boundary. Regards, -- Arnaud ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel