mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-31 22:25:35 -04: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;
|
||||
|
||||
/* 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) {
|
||||
|
||||
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);
|
||||
break;
|
||||
|
||||
case SND_TPLG_TYPE_DATA:
|
||||
err = tplg_copy_data(tplg, elem, ref);
|
||||
if (err < 0)
|
||||
return err;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue