echo-cancel: Skip canceller when no source outputs are connected

When a source-output isn't connected to our virtual source, we skip echo
cancellation altogether. This makes sense in general, and makes sure
that we don't end up adjusting for delay/drift when nothing is
connected. This should make convergence faster when the canceller
actually starts being used.
This commit is contained in:
Arun Raghavan 2011-09-29 12:49:11 +05:30
parent 4cacb1b670
commit cee6011572

View file

@ -656,6 +656,11 @@ static void source_output_push_cb(pa_source_output *o, const pa_memchunk *chunk)
return;
}
if (PA_UNLIKELY(u->source->thread_info.state != PA_SOURCE_RUNNING)) {
pa_source_post(u->source, chunk);
return;
}
/* handle queued messages, do any message sending of our own */
while (pa_asyncmsgq_process_one(u->asyncmsgq) > 0)
;
@ -852,7 +857,7 @@ static int source_output_process_msg_cb(pa_msgobject *obj, int code, void *data,
pa_source_output_assert_io_context(u->source_output);
if (PA_SOURCE_IS_OPENED(u->source_output->source->thread_info.state))
if (u->source_output->source->thread_info.state == PA_SOURCE_RUNNING)
pa_memblockq_push_align(u->sink_memblockq, chunk);
else
pa_memblockq_flush_write(u->sink_memblockq, TRUE);