On Wed, 18 May 2016 10:49:25 +0200, Takashi Iwai wrote: > > On Wed, 18 May 2016 07:48:15 +0200, > Shengjiu Wang wrote: > > > > Hi Takashi > > > > After adding your patch, I find another regression issue. > > > > The alsa-lib may stop at > > > > snd_pcm_write_areas() > > snd_pcm_wait_nocheck() > > > > with suspend and resume test. > > > > The reason is that: > > > > In the beginning of playback, before the snd_pcm_dmix_start() is > > called, the system enter suspend. After resume, snd_pcm_direct_resume() > > update the dmix->state, and dmix->state is 3 (RUNNING, because > > the dmix->spcm is in RUNNING from snd_pcm_dmix_open()). > > > > So in snd_pcm_write_areas() the state is RUNNING, then > > snd_pcm_start() will never be called, after a while, > > alsa-lib will stop at the snd_pcm_wait_nocheck() for the kernel > > will not wake up the timer. > > A good point. Actually the culprit is that we declare dmix as if it's > supporting the resume properly. Even if the resume works in the > slave, dmix itself can't guarantee the proper resume. So, we should > rather drop the whole resume stuff from dmix & co. > > Below is the patch against to the current git tree. Give it a try. > > > thanks, > > Takashi > > --- > From: Takashi Iwai <tiwai@xxxxxxx> > Subject: [PATCH] pcm: Remove resume support from dmix & co > > PCM dmix and other plugins inherit the resume behavior from the slave > PCM. However, the resume on dmix can't work reliably even if the > slave PCM may do resume. The running state of each dmix stream is > individual and may be PREPARED or RUN_PENDING while the slave PCM is > already in RUNNING. And, when the slave PCM is resumed, the whole > samples that have been already mapped are also played back, even if > the corresponding dmix stream is still in SUSPENDED. Such > inconsistencies can't be avoided as long as we manage each stream > individually. > > That said, dmix & co can't provide the proper resume support "by > design". For aligning with it, we should drop the whole resume code > and clear the PCM SND_PCM_INFO_RESUME flag. > > Reported-by: Shengjiu Wang <shengjiu.wang@xxxxxxx> > Signed-off-by: Takashi Iwai <tiwai@xxxxxxx> I performed a few tests and they seemed OK. I'm going to push the fix to git tree. thanks, Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel