summaryrefslogtreecommitdiff
path: root/gtk2_ardour/mixer_ui.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-12-22 01:05:53 +0100
committerRobin Gareus <robin@gareus.org>2016-12-22 01:05:53 +0100
commit7f88207b431ece3f19fead89d264cbe5cbdb93a5 (patch)
tree93410f8bebae67ebc11aa13daae37ffb7064560c /gtk2_ardour/mixer_ui.cc
parentb315ff531e706ead36d415abff79354ac37d40e8 (diff)
spill chained VCAs
Diffstat (limited to 'gtk2_ardour/mixer_ui.cc')
-rw-r--r--gtk2_ardour/mixer_ui.cc22
1 files changed, 20 insertions, 2 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index 340a5a55ec..857af7fc14 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -1279,8 +1279,18 @@ void
Mixer_UI::spill_redisplay (boost::shared_ptr<VCA> vca)
{
TreeModel::Children rows = track_model->children();
+ std::list<boost::shared_ptr<VCA> > vcas;
+ vcas.push_back (vca);
- for (TreeModel::Children::iterator i = rows.begin(); i != rows.end(); ++i) {
+ for (TreeModel::Children::const_iterator i = rows.begin(); i != rows.end(); ++i) {
+ AxisView* av = (*i)[stripable_columns.strip];
+ VCAMasterStrip* vms = dynamic_cast<VCAMasterStrip*> (av);
+ if (vms && vms->vca()->slaved_to (vca)) {
+ vcas.push_back (vms->vca());
+ }
+ }
+
+ for (TreeModel::Children::const_iterator i = rows.begin(); i != rows.end(); ++i) {
AxisView* av = (*i)[stripable_columns.strip];
MixerStrip* strip = dynamic_cast<MixerStrip*> (av);
@@ -1299,7 +1309,15 @@ Mixer_UI::spill_redisplay (boost::shared_ptr<VCA> vca)
continue;
}
- if (strip->route()->slaved_to (vca)) {
+ bool slaved = false;
+ for (std::list<boost::shared_ptr<VCA> >::const_iterator m = vcas.begin(); m != vcas.end(); ++m) {
+ if (strip->route()->slaved_to (*m)) {
+ slaved = true;
+ break;
+ }
+ }
+
+ if (slaved) {
if (strip->packed()) {
strip_packer.reorder_child (*strip, -1); /* put at end */