mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-11-02 09:01:48 -05:00
topology: Merge private data before embedded controls of a widget
For a widget ABI object, its private data sits before the embedded controls, so we should merge the private data blocks at first, and then the embedded controls. Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Acked-by: Liam Girdwood <liam.r.girdwood@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
fa7a52e636
commit
f9633ed852
1 changed files with 15 additions and 7 deletions
|
|
@ -160,7 +160,21 @@ static int tplg_build_widget(snd_tplg_t *tplg,
|
||||||
|
|
||||||
base = &elem->ref_list;
|
base = &elem->ref_list;
|
||||||
|
|
||||||
/* for each ref in this control elem */
|
/* A widget's private data sits before the embedded controls.
|
||||||
|
* So merge the private data blocks at first
|
||||||
|
*/
|
||||||
|
list_for_each(pos, base) {
|
||||||
|
ref = list_entry(pos, struct tplg_ref, list);
|
||||||
|
|
||||||
|
if (ref->type != SND_TPLG_TYPE_DATA)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
err = tplg_copy_data(tplg, elem, ref);
|
||||||
|
if (err < 0)
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Merge the embedded controls */
|
||||||
list_for_each(pos, base) {
|
list_for_each(pos, base) {
|
||||||
|
|
||||||
ref = list_entry(pos, struct tplg_ref, list);
|
ref = list_entry(pos, struct tplg_ref, list);
|
||||||
|
|
@ -190,12 +204,6 @@ static int tplg_build_widget(snd_tplg_t *tplg,
|
||||||
err = copy_dapm_control(elem, ref->elem);
|
err = copy_dapm_control(elem, ref->elem);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SND_TPLG_TYPE_DATA:
|
|
||||||
err = tplg_copy_data(tplg, elem, ref);
|
|
||||||
if (err < 0)
|
|
||||||
return err;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue