Don't propagate the copy into other pipelines that may have different scheduling.
Signed-off-by: Liam Girdwood liam.r.girdwood@linux.intel.com --- src/audio/pipeline.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/src/audio/pipeline.c b/src/audio/pipeline.c index 626cc92..2800d64 100644 --- a/src/audio/pipeline.c +++ b/src/audio/pipeline.c @@ -691,6 +691,10 @@ static int pipeline_copy_from_upstream(struct comp_dev *start, if (!buffer->connected || buffer->source->state != COMP_STATE_RUNNING) continue;
+ /* dont go upstream if this source is from another pipeline */ + if (buffer->source->pipeline != current->pipeline) + continue; + /* continue upstream */ err = pipeline_copy_from_upstream(start, buffer->source); if (err < 0) { @@ -745,6 +749,10 @@ static int pipeline_copy_to_downstream(struct comp_dev *start, if (!buffer->connected || buffer->sink->state != COMP_STATE_RUNNING) continue;
+ /* dont go downstream if this sink is from another pipeline */ + if (buffer->sink->pipeline != current->pipeline) + continue; + /* continue downstream */ err = pipeline_copy_to_downstream(start, buffer->sink); if (err < 0) {