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.
This commit is contained in:
Tanu Kaskinen 2013-08-14 16:54:28 +03:00
parent df0a9e12d8
commit 8cca3b3c10

View file

@ -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);
}