mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-11-04 13:30:08 -05:00
- fixed the infinite loop for probing the rate.
This commit is contained in:
parent
b5316c86cc
commit
5ff623fc99
1 changed files with 11 additions and 6 deletions
|
|
@ -966,14 +966,19 @@ int snd_pcm_hw_param_refine_multiple(snd_pcm_t *pcm,
|
||||||
const snd_interval_t *it = hw_param_interval_c(src, var);
|
const snd_interval_t *it = hw_param_interval_c(src, var);
|
||||||
const snd_interval_t *st = hw_param_interval_c(params, var);
|
const snd_interval_t *st = hw_param_interval_c(params, var);
|
||||||
if (snd_interval_single(it)) {
|
if (snd_interval_single(it)) {
|
||||||
unsigned int best = snd_interval_min(it), cur;
|
unsigned int best = snd_interval_min(it), cur, prev;
|
||||||
for (cur = best; ; cur += best) {
|
cur = best;
|
||||||
|
for (;;) {
|
||||||
if (st->max < cur || (st->max == cur && st->openmax))
|
if (st->max < cur || (st->max == cur && st->openmax))
|
||||||
break;
|
break;
|
||||||
if (it->min > cur || (it->min == cur && st->openmin))
|
if (it->min <= cur && ! (it->min == cur && st->openmin)) {
|
||||||
continue;
|
if (! snd_pcm_hw_param_set(pcm, params, SND_TRY, var, cur, 0))
|
||||||
if (snd_pcm_hw_param_set(pcm, params, SND_TRY, var, cur, 0) == 0)
|
return; /* ok */
|
||||||
return 0; /* ok */
|
}
|
||||||
|
prev = cur;
|
||||||
|
cur += best;
|
||||||
|
if (cur <= prev)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return snd_pcm_hw_param_refine_near(pcm, params, var, src);
|
return snd_pcm_hw_param_refine_near(pcm, params, var, src);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue