On Fri, 16 Mar 2018 11:02:54 +0100, <twischer@xxxxxxxxxxxxxx> wrote: > > From: Timo Wischer <twischer@xxxxxxxxxxxxxx> > > PREPARED should only be set when it is done and it was successfully. > > DRAINING should be signalled when starting to drain. There is no need to > check if draining was successfully because it will change to drop (SETUP) > in any case. > > Signed-off-by: Timo Wischer <twischer@xxxxxxxxxxxxxx> > > diff --git a/src/pcm/pcm_ioplug.c b/src/pcm/pcm_ioplug.c > index af223a1..e60b688 100644 > --- a/src/pcm/pcm_ioplug.c > +++ b/src/pcm/pcm_ioplug.c > @@ -146,13 +146,18 @@ static int snd_pcm_ioplug_prepare(snd_pcm_t *pcm) > ioplug_priv_t *io = pcm->private_data; > int err = 0; > > - io->data->state = SND_PCM_STATE_PREPARED; > snd_pcm_ioplug_reset(pcm); > if (io->data->callback->prepare) { > snd_pcm_unlock(pcm); /* to avoid deadlock */ > err = io->data->callback->prepare(io->data); > snd_pcm_lock(pcm); > } > + if (err < 0) > + return err; > + > + gettimestamp(&io->trigger_tstamp, pcm->tstamp_type); The trigger_tstamp is updated only when triggered (START, STOP, PAUSE, etc). And this change wasn't even documented in the changelog. > + io->data->state = SND_PCM_STATE_PREPARED; > + > return err; > } > > @@ -493,6 +498,10 @@ static int snd_pcm_ioplug_drain(snd_pcm_t *pcm) > > if (io->data->state == SND_PCM_STATE_OPEN) > return -EBADFD; > + > + gettimestamp(&io->trigger_tstamp, pcm->tstamp_type); Ditto. thanks, Takashi > + io->data->state = SND_PCM_STATE_DRAINING; > + > if (io->data->callback->drain) > io->data->callback->drain(io->data); > snd_pcm_lock(pcm); > -- > 2.7.4 > _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel