summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-01-13 10:48:23 +0100
committerPaul Davis <paul@linuxaudiosystems.com>2014-01-13 09:39:50 -0500
commit0da58eeebf513ad1ffea6e8c3ba96d20ab065eb7 (patch)
tree6fe568f24d29c79c4670801699f8b6879196a329 /libs/ardour
parentb4dea5309d4c4b675bea6f3514bb2331d228b161 (diff)
update internal-send port-count when target port-count changes
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/internal_send.h1
-rw-r--r--libs/ardour/delivery.cc2
-rw-r--r--libs/ardour/internal_send.cc12
3 files changed, 13 insertions, 2 deletions
diff --git a/libs/ardour/ardour/internal_send.h b/libs/ardour/ardour/internal_send.h
index 8636a805db..9bfbc4c659 100644
--- a/libs/ardour/ardour/internal_send.h
+++ b/libs/ardour/ardour/internal_send.h
@@ -70,6 +70,7 @@ class LIBARDOUR_API 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 ();