diff options
author | Robin Gareus <robin@gareus.org> | 2016-12-22 01:05:53 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-12-22 01:05:53 +0100 |
commit | 7f88207b431ece3f19fead89d264cbe5cbdb93a5 (patch) | |
tree | 93410f8bebae67ebc11aa13daae37ffb7064560c /gtk2_ardour/mixer_ui.cc | |
parent | b315ff531e706ead36d415abff79354ac37d40e8 (diff) |
spill chained VCAs
Diffstat (limited to 'gtk2_ardour/mixer_ui.cc')
-rw-r--r-- | gtk2_ardour/mixer_ui.cc | 22 |
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 */ |