]> git.alsa-project.org Git - alsa-lib.git/commitdiff
pcm: null: Do not allow a period size of 0
authorTimo Wischer <twischer@de.adit-jv.com>
Mon, 8 Apr 2019 08:55:54 +0000 (10:55 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 8 Apr 2019 12:27:29 +0000 (14:27 +0200)
Some applications do not expect that get_period_size_min() could
return 0. Therefore these applications cannot use the null plugin without
this patch.
Due to there is no use case for having a period size of 0 this patch
disallows a period size of 0 when using the null plugin.

Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
src/pcm/pcm_null.c

index ff61624470003845350df30ac2ab9eac719244fc..1d81548569f0f6e84c686948f51a61eb2a7fde61 100644 (file)
@@ -261,7 +261,17 @@ static snd_pcm_sframes_t snd_pcm_null_mmap_commit(snd_pcm_t *pcm,
 
 static int snd_pcm_null_hw_refine(snd_pcm_t *pcm ATTRIBUTE_UNUSED, snd_pcm_hw_params_t *params)
 {
-       int err = snd_pcm_hw_refine_soft(pcm, params);
+       int err;
+
+       /* Do not return a period size of 0 because for example portaudio cannot
+        * handle it.
+        */
+       err = _snd_pcm_hw_param_set_min(params, SND_PCM_HW_PARAM_PERIOD_SIZE, 1,
+                                       0);
+       if (err < 0)
+               return err;
+
+       err = snd_pcm_hw_refine_soft(pcm, params);
        params->info = SND_PCM_INFO_MMAP | SND_PCM_INFO_MMAP_VALID |
                       SND_PCM_INFO_RESUME | SND_PCM_INFO_PAUSE;
        params->fifo_size = 0;