mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
ALSA: control: clean up snd_ctl_hole_check()
The return value of snd_ctl_hole_check() is used only to detect whether to continue the loop in snd_ctl_find_hole() or not, so we can simplify the code by changing this return type to a boolean. Also rename this function to better show what it actually does. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
7c73358771
commit
0e82e5fa97
@ -279,31 +279,31 @@ void snd_ctl_free_one(struct snd_kcontrol *kcontrol)
|
||||
|
||||
EXPORT_SYMBOL(snd_ctl_free_one);
|
||||
|
||||
static unsigned int snd_ctl_hole_check(struct snd_card *card,
|
||||
unsigned int count)
|
||||
static bool snd_ctl_remove_numid_conflict(struct snd_card *card,
|
||||
unsigned int count)
|
||||
{
|
||||
struct snd_kcontrol *kctl;
|
||||
|
||||
list_for_each_entry(kctl, &card->controls, list) {
|
||||
if (kctl->id.numid < card->last_numid + 1 + count &&
|
||||
kctl->id.numid + kctl->count > card->last_numid + 1)
|
||||
return card->last_numid = kctl->id.numid + kctl->count - 1;
|
||||
kctl->id.numid + kctl->count > card->last_numid + 1) {
|
||||
card->last_numid = kctl->id.numid + kctl->count - 1;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return card->last_numid;
|
||||
return false;
|
||||
}
|
||||
|
||||
static int snd_ctl_find_hole(struct snd_card *card, unsigned int count)
|
||||
{
|
||||
unsigned int last_numid, iter = 100000;
|
||||
unsigned int iter = 100000;
|
||||
|
||||
last_numid = card->last_numid;
|
||||
while (last_numid != snd_ctl_hole_check(card, count)) {
|
||||
while (snd_ctl_remove_numid_conflict(card, count)) {
|
||||
if (--iter == 0) {
|
||||
/* this situation is very unlikely */
|
||||
snd_printk(KERN_ERR "unable to allocate new control numid\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
last_numid = card->last_numid;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user