diff options
author | Robin Gareus <robin@gareus.org> | 2014-01-13 10:48:23 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-01-13 10:48:23 +0100 |
commit | 0c384b7c219872322a4462f62e5e67b4119caa6d (patch) | |
tree | c48e4d2a8128e5a6eb2841b305720c9006a698bf /libs | |
parent | 5e2a145cdd79890ffe656e32ea012fb41f6424fe (diff) |
update internal-send port-count when target port-count changes
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/internal_send.h | 1 | ||||
-rw-r--r-- | libs/ardour/delivery.cc | 2 | ||||
-rw-r--r-- | libs/ardour/internal_send.cc | 12 |
3 files changed, 13 insertions, 2 deletions
diff --git a/libs/ardour/ardour/internal_send.h b/libs/ardour/ardour/internal_send.h index a7f0f73e6e..09b26d57d5 100644 --- a/libs/ardour/ardour/internal_send.h +++ b/libs/ardour/ardour/internal_send.h @@ -70,6 +70,7 @@ class InternalSend : public Send int connect_when_legal (); void init_gain (); int use_target (boost::shared_ptr<Route>); + void target_io_changed (); }; } // namespace ARDOUR diff --git a/libs/ardour/delivery.cc b/libs/ardour/delivery.cc index 79c44ce94a..575d26acdd 100644 --- a/libs/ardour/delivery.cc +++ b/libs/ardour/delivery.cc @@ -388,7 +388,7 @@ Delivery::reset_panner () if (_panshell) { _panshell->configure_io (ChanCount (DataType::AUDIO, pans_required()), ChanCount (DataType::AUDIO, pan_outs())); - if (_role == Main) { + if (_role == Main || _role == Aux) { _panshell->pannable()->set_panner (_panshell->panner()); } } diff --git a/libs/ardour/internal_send.cc b/libs/ardour/internal_send.cc index 9716cf002c..dac1839a5e 100644 --- a/libs/ardour/internal_send.cc +++ b/libs/ardour/internal_send.cc @@ -95,12 +95,22 @@ InternalSend::use_target (boost::shared_ptr<Route> sendto) target_connections.drop_connections (); _send_to->DropReferences.connect_same_thread (target_connections, boost::bind (&InternalSend::send_to_going_away, this)); - _send_to->PropertyChanged.connect_same_thread (target_connections, boost::bind (&InternalSend::send_to_property_changed, this, _1));; + _send_to->PropertyChanged.connect_same_thread (target_connections, boost::bind (&InternalSend::send_to_property_changed, this, _1)); + _send_to->io_changed.connect_same_thread (target_connections, boost::bind (&InternalSend::target_io_changed, this)); return 0; } void +InternalSend::target_io_changed () +{ + assert (_send_to); + mixbufs.ensure_buffers (_send_to->internal_return()->input_streams(), _session.get_block_size()); + mixbufs.set_count (_send_to->internal_return()->input_streams()); + reset_panner(); +} + +void InternalSend::send_to_going_away () { target_connections.drop_connections (); |