]> git.alsa-project.org Git - alsa-lib.git/commitdiff
topology: decode: Add enum control texts as separate element
authorPiotr Maziarz <piotrx.maziarz@linux.intel.com>
Mon, 31 Aug 2020 09:08:57 +0000 (11:08 +0200)
committerJaroslav Kysela <perex@perex.cz>
Mon, 31 Aug 2020 11:03:01 +0000 (13:03 +0200)
Texts are separate sections that should referenced by enum control.

Signed-off-by: Piotr Maziarz <piotrx.maziarz@linux.intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/topology/ctl.c

index 02e482e7d05df4e387847e989ba44f4b34626618..1f3984616a654b004d23a5bcdb7ed58ccde3f5aa 100644 (file)
@@ -1088,11 +1088,19 @@ int tplg_add_enum(snd_tplg_t *tplg, struct snd_tplg_enum_template *enum_ctl,
        }
 
        if (enum_ctl->texts != NULL) {
+               struct tplg_elem *texts = tplg_elem_new_common(tplg, NULL,
+                                               enum_ctl->hdr.name, SND_TPLG_TYPE_TEXT);
+
+               texts->texts->num_items = num_items;
                for (i = 0; i < num_items; i++) {
-                       if (enum_ctl->texts[i] != NULL)
-                               snd_strlcpy(ec->texts[i], enum_ctl->texts[i],
-                                           SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
+                       if (!enum_ctl->texts[i])
+                               continue;
+                       snd_strlcpy(ec->texts[i], enum_ctl->texts[i],
+                                   SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
+                       snd_strlcpy(texts->texts->items[i], enum_ctl->texts[i],
+                                   SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
                }
+               tplg_ref_add(elem, SND_TPLG_TYPE_TEXT, enum_ctl->hdr.name);
        }
 
        if (enum_ctl->values != NULL) {