ALSA: pcm: Return 0 when size < start_threshold in capture
authorRicardo Biehl Pasquali <pasqualirb@gmail.com>
Sat, 25 Aug 2018 19:53:23 +0000 (16:53 -0300)
committerTakashi Iwai <tiwai@suse.de>
Mon, 27 Aug 2018 05:27:55 +0000 (07:27 +0200)
In __snd_pcm_lib_xfer(), when capture, if state is PREPARED
and size is less than start_threshold nothing can be done.
As there is no error, 0 is returned.

Signed-off-by: Ricardo Biehl Pasquali <pasqualirb@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/pcm_lib.c

index 4e6110d778bd25c143ea325da0c823937ad019c0..7f71c2449af5ec5a48a63f295c55d36a47e7548e 100644 (file)
@@ -2173,11 +2173,16 @@ snd_pcm_sframes_t __snd_pcm_lib_xfer(struct snd_pcm_substream *substream,
                goto _end_unlock;
 
        if (!is_playback &&
-           runtime->status->state == SNDRV_PCM_STATE_PREPARED &&
-           size >= runtime->start_threshold) {
-               err = snd_pcm_start(substream);
-               if (err < 0)
+           runtime->status->state == SNDRV_PCM_STATE_PREPARED) {
+               if (size >= runtime->start_threshold) {
+                       err = snd_pcm_start(substream);
+                       if (err < 0)
+                               goto _end_unlock;
+               } else {
+                       /* nothing to do */
+                       err = 0;
                        goto _end_unlock;
+               }
        }
 
        runtime->twake = runtime->control->avail_min ? : 1;