diff options
Diffstat (limited to 'src/engine/events/Connect.cpp')
-rw-r--r-- | src/engine/events/Connect.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/engine/events/Connect.cpp b/src/engine/events/Connect.cpp index 18c31e03..a120aee4 100644 --- a/src/engine/events/Connect.cpp +++ b/src/engine/events/Connect.cpp @@ -75,9 +75,21 @@ Connect::pre_process() return; } - if ( ! (_src_port->type() == _dst_port->type() - || ( (_src_port->type() == PortType::CONTROL || _src_port->type() == PortType::AUDIO) - && (_dst_port->type() == PortType::CONTROL || _dst_port->type() == PortType::AUDIO) ))) { + const PortType src_type = _src_port->type(); + const PortType dst_type = _dst_port->type(); + + if ( !( + // Equal types + (src_type == dst_type) + + || // or Control=>Audio or Audio=>Control + ((src_type == PortType::CONTROL || src_type == PortType::AUDIO) + && (dst_type == PortType::CONTROL || dst_type == PortType::AUDIO)) + + || // or Events=>Message or Message=>Events + ((src_type == PortType::EVENTS || src_type == PortType::MESSAGE) + && (dst_type == PortType::EVENTS || dst_type == PortType::MESSAGE)) + )) { _error = TYPE_MISMATCH; QueuedEvent::pre_process(); return; |