]> git.alsa-project.org Git - alsa-lib.git/commitdiff
ucm: evaluate nested If blocks also in True/False blocks
authorJaroslav Kysela <perex@perex.cz>
Wed, 6 Nov 2019 09:19:57 +0000 (10:19 +0100)
committerJaroslav Kysela <perex@perex.cz>
Thu, 14 Nov 2019 14:00:40 +0000 (15:00 +0100)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/ucm/ucm_cond.c

index 0e2e44e0e2a8a7e9d8bfc663756cde20905475e3..3df83bd2ef091aca349cd275af2010b51cd273f6 100644 (file)
@@ -308,6 +308,16 @@ int uc_mgr_evaluate_condition(snd_use_case_mgr_t *uc_mgr,
                err = if_eval_one(uc_mgr, n, &a);
                if (err < 0)
                        return err;
+               err = snd_config_search(a, "If", &n2);
+               if (err < 0 && err != -ENOENT) {
+                       uc_error("If block error (If)");
+                       return -EINVAL;
+               } else if (err == 0) {
+                       err = uc_mgr_evaluate_condition(uc_mgr, a, n2);
+                       if (err < 0)
+                               return err;
+                       snd_config_delete(n2);
+               }
                snd_config_for_each(i2, next2, a) {
                        n2 = snd_config_iterator_entry(i2);
                        err = snd_config_remove(n2);