summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-10-13 07:42:15 +0000
committerDavid Robillard <d@drobilla.net>2007-10-13 07:42:15 +0000
commit7ca2e0c1a67c12954e04d2175cbb488efc426a85 (patch)
tree9626f6cda1d9001063dfe19fccd301fafe61b821
parent84e2c5cbda9e6e01aba73b36cf8d4136b56eeef0 (diff)
downloadingen-7ca2e0c1a67c12954e04d2175cbb488efc426a85.tar.gz
ingen-7ca2e0c1a67c12954e04d2175cbb488efc426a85.tar.bz2
ingen-7ca2e0c1a67c12954e04d2175cbb488efc426a85.zip
Fix audio->control connections.
git-svn-id: http://svn.drobilla.net/lad/ingen@879 a436a847-0d15-0410-975c-d299462d15a1
-rw-r--r--src/libs/engine/ConnectionImpl.cpp4
-rw-r--r--src/libs/engine/events/ConnectionEvent.cpp4
2 files changed, 6 insertions, 2 deletions
diff --git a/src/libs/engine/ConnectionImpl.cpp b/src/libs/engine/ConnectionImpl.cpp
index 019a051e..57d5e1ad 100644
--- a/src/libs/engine/ConnectionImpl.cpp
+++ b/src/libs/engine/ConnectionImpl.cpp
@@ -49,7 +49,9 @@ ConnectionImpl::ConnectionImpl(PortImpl* src_port, PortImpl* dst_port)
assert(dst_port);
assert(src_port != dst_port);
assert(src_port->path() != dst_port->path());
- assert(src_port->type() == dst_port->type());
+ assert(src_port->type() == dst_port->type()
+ || ( (src_port->type() == DataType::CONTROL || src_port->type() == DataType::AUDIO)
+ && (dst_port->type() == DataType::CONTROL || dst_port->type() == DataType::AUDIO) ));
/*assert((src_port->parent_node()->poly() == dst_port->parent_node()->poly())
|| (src_port->parent_node()->poly() == 1 || dst_port->parent_node()->poly() == 1));*/
diff --git a/src/libs/engine/events/ConnectionEvent.cpp b/src/libs/engine/events/ConnectionEvent.cpp
index ee2c1694..fa8b0f17 100644
--- a/src/libs/engine/events/ConnectionEvent.cpp
+++ b/src/libs/engine/events/ConnectionEvent.cpp
@@ -69,7 +69,9 @@ ConnectionEvent::pre_process()
return;
}
- if (_src_port->type() != _dst_port->type()) {
+ if (_src_port->type() != _dst_port->type()
+ && !( (_src_port->type() != DataType::AUDIO || _src_port->type() != DataType::CONTROL)
+ && (_dst_port->type() != DataType::AUDIO || _dst_port->type() != DataType::CONTROL) )) {
_error = TYPE_MISMATCH;
QueuedEvent::pre_process();
return;