summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Biehl Pasquali <pasqualirb@gmail.com>2019-02-13 00:57:51 -0200
committerTakashi Iwai <tiwai@suse.de>2019-02-13 08:01:05 +0100
commit932a81519572156a88dbc2349d183c603446f9c4 (patch)
tree0e88452ce44a24650e853d917eb17f7c6ae77585
parent5a23f385686fe0e9cd8e19cb09dff9a3b68082de (diff)
downloadlinux-932a81519572156a88dbc2349d183c603446f9c4.tar.gz
linux-932a81519572156a88dbc2349d183c603446f9c4.tar.bz2
linux-932a81519572156a88dbc2349d183c603446f9c4.zip
ALSA: pcm: Comment why read blocks when PCM is not running
This avoids bringing back the problem introduced by 62ba568f7aef ("ALSA: pcm: Return 0 when size < start_threshold in capture") and fixed in 00a399cad1a0 ("ALSA: pcm: Revert capture stream behavior change in blocking mode"), which prevented the user from starting capture from another thread. Signed-off-by: Ricardo Biehl Pasquali <pasqualirb@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/core/pcm_lib.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c
index bcb06bd3d81d..345ab1ab2cac 100644
--- a/sound/core/pcm_lib.c
+++ b/sound/core/pcm_lib.c
@@ -2176,6 +2176,10 @@ snd_pcm_sframes_t __snd_pcm_lib_xfer(struct snd_pcm_substream *substream,
if (runtime->status->state == SNDRV_PCM_STATE_RUNNING)
snd_pcm_update_hw_ptr(substream);
+ /*
+ * If size < start_threshold, wait indefinitely. Another
+ * thread may start capture
+ */
if (!is_playback &&
runtime->status->state == SNDRV_PCM_STATE_PREPARED &&
size >= runtime->start_threshold) {