summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiam Girdwood <lrg@slimlogic.co.uk>2011-01-11 18:56:30 +0100
committerJaroslav Kysela <perex@perex.cz>2011-01-11 19:05:40 +0100
commita618cdf0574a21bdd04e936fe2ac00d32a64e99d (patch)
tree003f25d6b2f6241c8917eabec4c160b9891ca1c3
parente1b4bd6c89b194c54e892626727264e49464a3f1 (diff)
downloadalsa-lib-ucm.tar.gz
ucm: fix switch device & modifier when no transition is founducm
Fix some logic bugs in switch device and switch modifier when transition sequences are not found. Also fix check for new device. Reported-by: w0806.kim@samsung.com Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
-rw-r--r--src/ucm/main.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/ucm/main.c b/src/ucm/main.c
index 73050427..030c9b1c 100644
--- a/src/ucm/main.c
+++ b/src/ucm/main.c
@@ -1305,7 +1305,7 @@ static int switch_device(snd_use_case_mgr_t *uc_mgr,
if (xold == NULL)
return -ENOENT;
xnew = find_device(uc_mgr->active_verb, new_device);
- if (xold == NULL)
+ if (xnew == NULL)
return -ENOENT;
err = 0;
list_for_each(pos, &xold->transition_list) {
@@ -1327,7 +1327,7 @@ static int switch_device(snd_use_case_mgr_t *uc_mgr,
err = set_device(uc_mgr, xold, 0);
if (err < 0)
return err;
- err = set_device(uc_mgr, xnew, 0);
+ err = set_device(uc_mgr, xnew, 1);
if (err < 0)
return err;
}
@@ -1379,7 +1379,7 @@ static int switch_modifier(snd_use_case_mgr_t *uc_mgr,
err = set_modifier(uc_mgr, xold, 0);
if (err < 0)
return err;
- err = set_modifier(uc_mgr, xnew, 0);
+ err = set_modifier(uc_mgr, xnew, 1);
if (err < 0)
return err;
}