Hi Pierre-Louis
static int dpcm_prune_paths(...) { ... /* Destroy any old FE <--> BE connections */ (1) for_each_dpcm_be(fe, stream, dpcm) { unsigned int i;
/* is there a valid CPU DAI widget for this BE */
| widget = dai_get_widget(dpcm->be->cpu_dai, stream); | (A) /* prune the BE if it's no longer in our active list */ | if (widget && widget_in_list(list, widget)) |(a) continue;
| /* is there a valid CODEC DAI widget for this BE */ |(2) for_each_rtd_codec_dai(dpcm->be, i, dai) { | widget = dai_get_widget(dai, stream); (B) | /* prune the BE if it's no longer in our active list */ | if (widget && widget_in_list(list, widget)) |(b) continue;
}
...
| dpcm->state = ... (C) dpcm->be->dpcm[stream].runtime_update = ... | prune++;
...}
}
(snip)
Nice catch. This looks like a problem added during the transition to multi-codec.
(snip)
the continue was not meant to continue the for loop on num_codecs, but the outer loop for dpcm.
Thank for checking !! OK, it is bug. I will post patch for it.
Thank you for your help !! Best regards --- Kuninori Morimoto