summaryrefslogtreecommitdiff
path: root/alsactl/state.c
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2008-11-21 14:44:31 +0100
committerJaroslav Kysela <perex@perex.cz>2008-11-21 14:44:31 +0100
commit05f78cc6811110156c701fd9a2a5d15de8b4b1c7 (patch)
treebc2a6f1296db72ed134f1716cc4bd673fb998894 /alsactl/state.c
parent6232f1c96cde1fee247e95cd97235c48cc7b168d (diff)
downloadalsa-utils-05f78cc6811110156c701fd9a2a5d15de8b4b1c7.tar.gz
alsactl: Fix restore / init call behaviour when driver contains more controls
Fix check when driver contains more controls than state file. In this case, initialization procedure should be run, too. Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'alsactl/state.c')
-rw-r--r--alsactl/state.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/alsactl/state.c b/alsactl/state.c
index 467fa93..635a999 100644
--- a/alsactl/state.c
+++ b/alsactl/state.c
@@ -1162,7 +1162,7 @@ static int set_control(snd_ctl_t *handle, snd_config_t *control,
return -EINVAL;
}
numid = atoi(id);
- if (numid > *maxnumid)
+ if ((int)numid > *maxnumid)
*maxnumid = numid;
snd_config_for_each(i, next, control) {
snd_config_t *n = snd_config_iterator_entry(i);
@@ -1398,7 +1398,7 @@ static int set_controls(int card, snd_config_t *top, int doit)
snd_ctl_card_info_t *info;
snd_config_t *control;
snd_config_iterator_t i, next;
- int err, maxnumid;
+ int err, maxnumid = -1;
char name[32], tmpid[16];
const char *id;
snd_ctl_card_info_alloca(&info);
@@ -1442,7 +1442,7 @@ static int set_controls(int card, snd_config_t *top, int doit)
/* check if we have additional controls in driver */
/* in this case we should go through init procedure */
- if (!doit) {
+ if (!doit && maxnumid >= 0) {
snd_ctl_elem_id_t *id;
snd_ctl_elem_info_t *info;
snd_ctl_elem_id_alloca(&id);