mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
pcm: ioplug: update prepare and draining state correctly
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@de.adit-jv.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
22618077e7
commit
07a17bd5a5
1 changed files with 6 additions and 1 deletions
|
|
@ -146,13 +146,16 @@ 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;
|
||||
|
||||
io->data->state = SND_PCM_STATE_PREPARED;
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
@ -493,6 +496,8 @@ static int snd_pcm_ioplug_drain(snd_pcm_t *pcm)
|
|||
|
||||
if (io->data->state == SND_PCM_STATE_OPEN)
|
||||
return -EBADFD;
|
||||
|
||||
io->data->state = SND_PCM_STATE_DRAINING;
|
||||
if (io->data->callback->drain)
|
||||
io->data->callback->drain(io->data);
|
||||
snd_pcm_lock(pcm);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue