diff mbox

[1/4] ASoC: dapm: Add new widgets to the end of the widget list

Message ID 1430496165-13917-1-git-send-email-lars@metafoo.de (mailing list archive)
State Accepted
Commit c38a1ffbf54f4d1c40a476a2a9ddc9177f493b78
Headers show

Commit Message

Lars-Peter Clausen May 1, 2015, 4:02 p.m. UTC
Currently new widgets are appended to the beginning of the cards widget
list. This has the effect that widgets that are created while iterating
over the widget list in snd_soc_dapm_new_widgets() (like e.g. the
auto-disable widgets) are not covered during that invocation of the
function. If no further invocations of snd_soc_dapm_new_widgets() happen
these widgets will not be fully initialized and e.g. no debugfs entries are
created for them.

By adding new widgets to the end of the widget list we make sure that
widgets that are created in snd_soc_dapm_new_widgets() will still be
handled during the same snd_soc_dapm_new_widgets() invocation and are
always fully initialized.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
This series depends on Charles' mux auto-disable series.
---
 sound/soc/soc-dapm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Mark Brown May 6, 2015, 4:25 p.m. UTC | #1
On Fri, May 01, 2015 at 06:02:42PM +0200, Lars-Peter Clausen wrote:
> Currently new widgets are appended to the beginning of the cards widget
> list. This has the effect that widgets that are created while iterating

Applied, thanks.
Mark Brown May 6, 2015, 4:36 p.m. UTC | #2
On Fri, May 01, 2015 at 06:02:42PM +0200, Lars-Peter Clausen wrote:
> Currently new widgets are appended to the beginning of the cards widget
> list. This has the effect that widgets that are created while iterating

Applied all, thanks.
diff mbox

Patch

diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 79e6cf4..5c159f4 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -3252,7 +3252,7 @@  snd_soc_dapm_new_control(struct snd_soc_dapm_context *dapm,
 	INIT_LIST_HEAD(&w->sinks);
 	INIT_LIST_HEAD(&w->list);
 	INIT_LIST_HEAD(&w->dirty);
-	list_add(&w->list, &dapm->card->widgets);
+	list_add_tail(&w->list, &dapm->card->widgets);
 
 	w->inputs = -1;
 	w->outputs = -1;