From cee60115720e3e96062e35f0d7ee2ff4e531e6b7 Mon Sep 17 00:00:00 2001 From: Arun Raghavan Date: Thu, 29 Sep 2011 12:49:11 +0530 Subject: [PATCH] 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. --- src/modules/echo-cancel/module-echo-cancel.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/modules/echo-cancel/module-echo-cancel.c b/src/modules/echo-cancel/module-echo-cancel.c index a3e7e0d5..8d77a3b2 100644 --- a/src/modules/echo-cancel/module-echo-cancel.c +++ b/src/modules/echo-cancel/module-echo-cancel.c @@ -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); -- 2.39.2