Commit 0e82e5fa authored by Clemens Ladisch's avatar Clemens Ladisch Committed by Takashi Iwai

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: default avatarClemens Ladisch <clemens@ladisch.de>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 7c733587
...@@ -279,31 +279,31 @@ void snd_ctl_free_one(struct snd_kcontrol *kcontrol) ...@@ -279,31 +279,31 @@ void snd_ctl_free_one(struct snd_kcontrol *kcontrol)
EXPORT_SYMBOL(snd_ctl_free_one); EXPORT_SYMBOL(snd_ctl_free_one);
static unsigned int snd_ctl_hole_check(struct snd_card *card, static bool snd_ctl_remove_numid_conflict(struct snd_card *card,
unsigned int count) unsigned int count)
{ {
struct snd_kcontrol *kctl; struct snd_kcontrol *kctl;
list_for_each_entry(kctl, &card->controls, list) { list_for_each_entry(kctl, &card->controls, list) {
if (kctl->id.numid < card->last_numid + 1 + count && if (kctl->id.numid < card->last_numid + 1 + count &&
kctl->id.numid + kctl->count > card->last_numid + 1) kctl->id.numid + kctl->count > card->last_numid + 1) {
return card->last_numid = kctl->id.numid + kctl->count - 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) 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 (snd_ctl_remove_numid_conflict(card, count)) {
while (last_numid != snd_ctl_hole_check(card, count)) {
if (--iter == 0) { if (--iter == 0) {
/* this situation is very unlikely */ /* this situation is very unlikely */
snd_printk(KERN_ERR "unable to allocate new control numid\n"); snd_printk(KERN_ERR "unable to allocate new control numid\n");
return -ENOMEM; return -ENOMEM;
} }
last_numid = card->last_numid;
} }
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment