diff --git a/src/ucm/main.c b/src/ucm/main.c index 23e15bd8..e5f91887 100644 --- a/src/ucm/main.c +++ b/src/ucm/main.c @@ -542,14 +542,7 @@ static int import_master_config(snd_use_case_mgr_t *uc_mgr) err = uc_mgr_import_master_config(uc_mgr); if (err < 0) return err; - err = add_auto_values(uc_mgr); - if (err < 0) - return err; - err = execute_sequence(uc_mgr, &uc_mgr->default_list, - &uc_mgr->value_list, NULL, NULL); - if (err < 0) - uc_error("Unable to execute default sequence"); - return err; + return add_auto_values(uc_mgr); } /** @@ -845,6 +838,15 @@ static int set_verb(snd_use_case_mgr_t *uc_mgr, int err; if (enable) { + if (!uc_mgr->default_list_executed) { + err = execute_sequence(uc_mgr, &uc_mgr->default_list, + &uc_mgr->value_list, NULL, NULL); + if (err < 0) { + uc_error("Unable to execute default sequence"); + return err; + } + uc_mgr->default_list_executed = 1; + } seq = &verb->enable_list; } else { seq = &verb->disable_list; @@ -985,6 +987,8 @@ int snd_use_case_mgr_reload(snd_use_case_mgr_t *uc_mgr) uc_mgr_free_verb(uc_mgr); + uc_mgr->default_list_executed = 0; + /* reload all use cases */ err = import_master_config(uc_mgr); if (err < 0) { diff --git a/src/ucm/ucm_local.h b/src/ucm/ucm_local.h index 78457584..849019bd 100644 --- a/src/ucm/ucm_local.h +++ b/src/ucm/ucm_local.h @@ -226,6 +226,7 @@ struct snd_use_case_mgr { /* default settings - sequence */ struct list_head default_list; + int default_list_executed; /* default settings - value list */ struct list_head value_list;