core: Link virtual sinks and sources to their streams.

This change doesn't add any functionality in itself, but it will be useful in
the future for operating on chains of sinks or sources that are piggy-backing
on each other.

For example, the PA_PROP_DEVICE_MASTER_DEVICE property could
be handled in the core so that each virtual device doesn't have to maintain it
separately. By using the origin_sink and destination_source pointers the core
is able to see at stream creation time that the stream is created by a virtual
device, and then update that device's property list using the name of the
master device that the stream is being connected to. The same thing can be done
also when the stream is being moved from a device to another, in which case the
_MASTER_DEVICE property needs updating.
This commit is contained in:
Tanu Kaskinen 2011-02-07 18:35:51 +02:00 committed by Colin Guthrie
parent 1f848f82c4
commit 969c7c80fe
14 changed files with 34 additions and 3 deletions

View file

@ -83,7 +83,8 @@ struct pa_sink_input {
pa_module *module; /* may be NULL */
pa_client *client; /* may be NULL */
pa_sink *sink; /* NULL while we are being moved */
pa_sink *sink; /* NULL while we are being moved */
pa_sink *origin_sink; /* only set by filter sinks */
/* A sink input may be connected to multiple source outputs
* directly, so that they don't get mixed data of the entire
@ -285,6 +286,7 @@ typedef struct pa_sink_input_new_data {
pa_client *client;
pa_sink *sink;
pa_sink *origin_sink;
pa_resample_method_t resample_method;