mirror of
https://github.com/alsa-project/alsa-utils
synced 2024-11-08 19:55:43 +01:00
alsabat: fix alsabat -86 error
alsabat reports -86 error when system suspend and resume. Check the return value of read_to_pcm() and write_to_pcm(), when -x8 err is detected, do resume and wait for read/write to pcm to complete. Write PCM device error: Streams pipe error(-86) Read PCM device error: Streams pipe error(-86) *** Error in alsabat: double free or corruption (out): 0x00007fb438001810 *** Signed-off-by: Keqiao, Zhang <keqiao.zhang@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
18a1ed8f89
commit
cadd877da6
1 changed files with 10 additions and 0 deletions
10
bat/alsa.c
10
bat/alsa.c
|
@ -319,6 +319,11 @@ static int write_to_pcm(const struct pcm_container *sndpcm,
|
|||
if (bat->roundtriplatency)
|
||||
bat->latency.xrun_error = true;
|
||||
snd_pcm_prepare(sndpcm->handle);
|
||||
} else if (err == -ESTRPIPE) {
|
||||
while ((err = snd_pcm_resume(sndpcm->handle)) == -EAGAIN)
|
||||
sleep(1); /* wait until resume flag is released */
|
||||
if (err < 0)
|
||||
snd_pcm_prepare(sndpcm->handle);
|
||||
} else if (err < 0) {
|
||||
fprintf(bat->err, _("Write PCM device error: %s(%d)\n"),
|
||||
snd_strerror(err), err);
|
||||
|
@ -518,6 +523,11 @@ static int read_from_pcm(struct pcm_container *sndpcm,
|
|||
snd_strerror(err), err);
|
||||
if (bat->roundtriplatency)
|
||||
bat->latency.xrun_error = true;
|
||||
} else if (err == -ESTRPIPE) {
|
||||
while ((err = snd_pcm_resume(sndpcm->handle)) == -EAGAIN)
|
||||
sleep(1); /* wait until resume flag is released */
|
||||
if (err < 0)
|
||||
snd_pcm_prepare(sndpcm->handle);
|
||||
} else if (err < 0) {
|
||||
fprintf(bat->err, _("Read PCM device error: %s(%d)\n"),
|
||||
snd_strerror(err), err);
|
||||
|
|
Loading…
Reference in a new issue