This patch set adds pa_node, pa_port_node, pa_sink_node, pa_source_node, pa_sink_input_node and pa_source_output node structs to the core. Node support is added for some backends: alsa, bluetooth, jack, and native streams. I didn't implement other backends, because I'm lazy (a nicer excuse might be that the nodes may evolve quite a bit, so there's less code to fix when that happens). The nodes aren't yet visible to clients, and the nodes don't support any operations to be done on them, such as routing between two nodes. I'll try to keep the patch sets small enough not to scare reviewers (21 patches is already more than I'd like). Tanu Kaskinen (21): device-port: Assert that ports have a description device-class: Introduce pa_device_class_t bluetooth: Use pa_device_class_t alsa: Ensure that sinks and sources have descriptions waveout: Simplify setting the device description device-manager: Add a sanity check for reading entries sink, source: Disallow setting NULL description sink, source: Assert that a description is always set sink, source: Add pa_sink/source_get_description() sink-input, source-output: Add pa_sink_input/source_output_get_description() node: Introduce pa_node sink-node, source-node: Introduce sink and source nodes device-port: Add a device_class field to ports port-node: Introduce pa_port_node dynarray: Reimplement with nicer semantics alsa: Add node support bluetooth: Add node support jack: Add node supprt sink-input-node, source-output-node: Introduce sink input and source output nodes object: Initialize allocated memory to zero native: Add node support for streams src/Makefile.am | 7 ++ src/modules/alsa/alsa-sink.c | 16 ++- src/modules/alsa/alsa-source.c | 16 ++- src/modules/alsa/module-alsa-card.c | 26 +++++ src/modules/bluetooth/bluetooth-util.c | 72 ++++++------- src/modules/bluetooth/bluetooth-util.h | 16 +-- src/modules/bluetooth/module-bluetooth-device.c | 128 +++++++++++++---------- src/modules/echo-cancel/module-echo-cancel.c | 32 ++---- src/modules/jack/module-jack-sink.c | 7 ++ src/modules/jack/module-jack-source.c | 7 ++ src/modules/macosx/module-bonjour-publish.c | 11 +- src/modules/module-combine-sink.c | 6 +- src/modules/module-device-manager.c | 17 ++-- src/modules/module-equalizer-sink.c | 4 +- src/modules/module-ladspa-sink.c | 13 +-- src/modules/module-loopback.c | 8 +- src/modules/module-remap-sink.c | 12 +-- src/modules/module-remap-source.c | 12 +-- src/modules/module-rygel-media-server.c | 2 +- src/modules/module-virtual-sink.c | 16 ++- src/modules/module-virtual-source.c | 25 ++--- src/modules/module-virtual-surround-sink.c | 16 ++- src/modules/module-waveout.c | 8 +- src/pulsecore/cli-command.c | 4 +- src/pulsecore/cli-text.c | 4 +- src/pulsecore/core.c | 1 + src/pulsecore/core.h | 2 +- src/pulsecore/device-class.c | 88 ++++++++++++++++ src/pulsecore/device-class.h | 88 ++++++++++++++++ src/pulsecore/device-port.c | 9 ++ src/pulsecore/device-port.h | 5 + src/pulsecore/dynarray.c | 85 +++++++--------- src/pulsecore/dynarray.h | 49 +++++---- src/pulsecore/namereg.c | 2 +- src/pulsecore/namereg.h | 3 +- src/pulsecore/node.c | 130 ++++++++++++++++++++++++ src/pulsecore/node.h | 63 ++++++++++++ src/pulsecore/object.c | 2 +- src/pulsecore/port-node.c | 80 +++++++++++++++ src/pulsecore/port-node.h | 40 ++++++++ src/pulsecore/protocol-http.c | 4 +- src/pulsecore/protocol-native.c | 23 ++++- src/pulsecore/sink-input-node.c | 70 +++++++++++++ src/pulsecore/sink-input-node.h | 40 ++++++++ src/pulsecore/sink-input.c | 21 ++++ src/pulsecore/sink-input.h | 2 + src/pulsecore/sink-node.c | 70 +++++++++++++ src/pulsecore/sink-node.h | 40 ++++++++ src/pulsecore/sink.c | 23 +++-- src/pulsecore/sink.h | 1 + src/pulsecore/source-node.c | 70 +++++++++++++ src/pulsecore/source-node.h | 40 ++++++++ src/pulsecore/source-output-node.c | 70 +++++++++++++ src/pulsecore/source-output-node.h | 40 ++++++++ src/pulsecore/source-output.c | 21 ++++ src/pulsecore/source-output.h | 4 +- src/pulsecore/source.c | 21 ++-- src/pulsecore/source.h | 1 + src/pulsecore/tokenizer.c | 8 +- 59 files changed, 1360 insertions(+), 341 deletions(-) create mode 100644 src/pulsecore/device-class.c create mode 100644 src/pulsecore/device-class.h create mode 100644 src/pulsecore/node.c create mode 100644 src/pulsecore/node.h create mode 100644 src/pulsecore/port-node.c create mode 100644 src/pulsecore/port-node.h create mode 100644 src/pulsecore/sink-input-node.c create mode 100644 src/pulsecore/sink-input-node.h create mode 100644 src/pulsecore/sink-node.c create mode 100644 src/pulsecore/sink-node.h create mode 100644 src/pulsecore/source-node.c create mode 100644 src/pulsecore/source-node.h create mode 100644 src/pulsecore/source-output-node.c create mode 100644 src/pulsecore/source-output-node.h -- 1.8.1.2