alsa: disable tsched for software devices before we configure the buffer metrics so that we don't accidently set a buffer size that is suitable for tsched where we don't use tsched

This commit is contained in:
Lennart Poettering 2009-09-09 23:57:49 +02:00
parent 8364b959b4
commit d5f43bd4c6
3 changed files with 4 additions and 11 deletions

View file

@ -1795,11 +1795,6 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
u->use_tsched = use_tsched = FALSE; u->use_tsched = use_tsched = FALSE;
} }
if (use_tsched && !pa_alsa_pcm_is_hw(u->pcm_handle)) {
pa_log_info("Device is not a hardware device, disabling timer-based scheduling.");
u->use_tsched = use_tsched = FALSE;
}
if (u->use_mmap) if (u->use_mmap)
pa_log_info("Successfully enabled mmap() mode."); pa_log_info("Successfully enabled mmap() mode.");

View file

@ -1636,11 +1636,6 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
u->use_tsched = use_tsched = FALSE; u->use_tsched = use_tsched = FALSE;
} }
if (use_tsched && !pa_alsa_pcm_is_hw(u->pcm_handle)) {
pa_log_info("Device is not a hardware device, disabling timer-based scheduling.");
u->use_tsched = use_tsched = FALSE;
}
if (u->use_mmap) if (u->use_mmap)
pa_log_info("Successfully enabled mmap() mode."); pa_log_info("Successfully enabled mmap() mode.");

View file

@ -189,7 +189,7 @@ static int set_buffer_size(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams,
} }
/* Set the hardware parameters of the given ALSA device. Returns the /* Set the hardware parameters of the given ALSA device. Returns the
* selected fragment settings in *period and *period_size */ * selected fragment settings in *buffer_size and *period_size. If tsched mode can be enabled */
int pa_alsa_set_hw_params( int pa_alsa_set_hw_params(
snd_pcm_t *pcm_handle, snd_pcm_t *pcm_handle,
pa_sample_spec *ss, pa_sample_spec *ss,
@ -247,6 +247,9 @@ int pa_alsa_set_hw_params(
if (!_use_mmap) if (!_use_mmap)
_use_tsched = FALSE; _use_tsched = FALSE;
if (!pa_alsa_pcm_is_hw(pcm_handle))
_use_tsched = FALSE;
if ((ret = set_format(pcm_handle, hwparams, &_ss.format)) < 0) if ((ret = set_format(pcm_handle, hwparams, &_ss.format)) < 0)
goto finish; goto finish;