]> git.alsa-project.org Git - alsa-lib.git/commitdiff
ucm: fix switch device & modifier when no transition is found ucm
authorLiam Girdwood <lrg@slimlogic.co.uk>
Tue, 11 Jan 2011 17:56:30 +0000 (18:56 +0100)
committerJaroslav Kysela <perex@perex.cz>
Tue, 11 Jan 2011 18:05:40 +0000 (19:05 +0100)
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>
src/ucm/main.c

index 730504273d891589d526ecd8fa3442e5e909c094..030c9b1ce63983f99848a3931ad950e3fdb753f5 100644 (file)
@@ -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;
         }