summaryrefslogtreecommitdiffstats
path: root/src/engine/events/Disconnect.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2010-02-25 20:40:13 +0000
committerDavid Robillard <d@drobilla.net>2010-02-25 20:40:13 +0000
commit77a9beca75debd2d87d735fc4fe847694eee6f13 (patch)
treeae03699b999e84bc4c283abfd215c8037ecddaf6 /src/engine/events/Disconnect.cpp
parente22984efe9b82ab006494aea93814a592cd44ece (diff)
downloadingen-77a9beca75debd2d87d735fc4fe847694eee6f13.tar.gz
ingen-77a9beca75debd2d87d735fc4fe847694eee6f13.tar.bz2
ingen-77a9beca75debd2d87d735fc4fe847694eee6f13.zip
Work on contexts and polymorphic ports.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2492 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/events/Disconnect.cpp')
-rw-r--r--src/engine/events/Disconnect.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/engine/events/Disconnect.cpp b/src/engine/events/Disconnect.cpp
index 250dc234..f25c0f4a 100644
--- a/src/engine/events/Disconnect.cpp
+++ b/src/engine/events/Disconnect.cpp
@@ -190,10 +190,12 @@ Disconnect::execute(ProcessContext& context)
_dst_input_port->connect_buffers();
if (_clear_dst_port) {
for (uint32_t v = 0; v < _dst_input_port->poly(); ++v) {
- if (_dst_input_port->type() == PortType::CONTROL) {
- PtrCast<AudioBuffer>(_dst_input_port->buffer(v))->set_value(
- _dst_input_port->value().get_float(),
- context.start(), context.start());
+ if (_dst_input_port->is_a(PortType::CONTROL)) {
+ IntrusivePtr<AudioBuffer> abuf(PtrCast<AudioBuffer>(
+ _dst_input_port->buffer(v)));
+ if (abuf)
+ abuf->set_value(_dst_input_port->value().get_float(),
+ context.start(), context.start());
} else {
_dst_input_port->buffer(v)->clear();
}