From 8cca3b3c1007fd81d57534b4f3b5280b08df9272 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Wed, 14 Aug 2013 16:54:28 +0300 Subject: [PATCH] source-output: Get the correct source for "direct_on_input" streams If a capture stream captures from a single sink input (so the capture stream is a so called "direct on input" stream), then it needs to connect to the monitor source of the sink to which the sink input is connected. Previously the correct source was not figured out automatically, causing the capture stream creation to fail. --- src/pulsecore/source-output.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c index 66a33bd53..5a48935cd 100644 --- a/src/pulsecore/source-output.c +++ b/src/pulsecore/source-output.c @@ -255,8 +255,16 @@ int pa_source_output_new( pa_return_val_if_fail(!data->driver || pa_utf8_valid(data->driver), -PA_ERR_INVALID); if (!data->source) { - pa_source *source = pa_namereg_get(core, NULL, PA_NAMEREG_SOURCE); - pa_return_val_if_fail(source, -PA_ERR_NOENTITY); + pa_source *source; + + if (data->direct_on_input) { + source = data->direct_on_input->sink->monitor_source; + pa_return_val_if_fail(source, -PA_ERR_INVALID); + } else { + source = pa_namereg_get(core, NULL, PA_NAMEREG_SOURCE); + pa_return_val_if_fail(source, -PA_ERR_NOENTITY); + } + pa_source_output_new_data_set_source(data, source, false); }