Skip to content
Snippets Groups Projects
Commit 3b817994 authored by Charles Keepax's avatar Charles Keepax Committed by Takashi Iwai
Browse files

ALSA: compress: Be more restrictive about when a drain is allowed


Draining makes little sense in the situation of hardware overrun, as the
hardware will have consumed all its available samples. Additionally,
draining whilst the stream is paused would presumably get stuck as no
data is being consumed on the DSP side.

Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
Acked-by: default avatarVinod Koul <vkoul@kernel.org>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent a70ab8a8
No related branches found
No related tags found
No related merge requests found
...@@ -811,7 +811,10 @@ static int snd_compr_drain(struct snd_compr_stream *stream) ...@@ -811,7 +811,10 @@ static int snd_compr_drain(struct snd_compr_stream *stream)
case SNDRV_PCM_STATE_OPEN: case SNDRV_PCM_STATE_OPEN:
case SNDRV_PCM_STATE_SETUP: case SNDRV_PCM_STATE_SETUP:
case SNDRV_PCM_STATE_PREPARED: case SNDRV_PCM_STATE_PREPARED:
case SNDRV_PCM_STATE_PAUSED:
return -EPERM; return -EPERM;
case SNDRV_PCM_STATE_XRUN:
return -EPIPE;
default: default:
break; break;
} }
...@@ -860,7 +863,10 @@ static int snd_compr_partial_drain(struct snd_compr_stream *stream) ...@@ -860,7 +863,10 @@ static int snd_compr_partial_drain(struct snd_compr_stream *stream)
case SNDRV_PCM_STATE_OPEN: case SNDRV_PCM_STATE_OPEN:
case SNDRV_PCM_STATE_SETUP: case SNDRV_PCM_STATE_SETUP:
case SNDRV_PCM_STATE_PREPARED: case SNDRV_PCM_STATE_PREPARED:
case SNDRV_PCM_STATE_PAUSED:
return -EPERM; return -EPERM;
case SNDRV_PCM_STATE_XRUN:
return -EPIPE;
default: default:
break; break;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment