Skip to content

Commit

Permalink
ALSA: control: clean up snd_ctl_hole_check()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Clemens Ladisch authored and Takashi Iwai committed Mar 8, 2011
1 parent 7c73358 commit 0e82e5f
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions sound/core/control.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down

0 comments on commit 0e82e5f

Please sign in to comment.