diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-10 16:59:27 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-10 16:59:34 -0400 |
commit | ec8a4de01596c162c1529f3021dfc432bf66dfe8 (patch) | |
tree | 690f1a78a9d538ecda8ec6f80673207ce2092980 /libs/ardour/route_group.cc | |
parent | 1695de335db34e7d35de25454e3a33e560d81ae0 (diff) |
make relative gain control in route groups work (again)
Diffstat (limited to 'libs/ardour/route_group.cc')
-rw-r--r-- | libs/ardour/route_group.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libs/ardour/route_group.cc b/libs/ardour/route_group.cc index ce6e4a12e2..f258e9f14d 100644 --- a/libs/ardour/route_group.cc +++ b/libs/ardour/route_group.cc @@ -99,7 +99,7 @@ RouteGroup::RouteGroup (Session& s, const string &n) , _solo_group (new ControlGroup (SoloAutomation)) , _mute_group (new ControlGroup (MuteAutomation)) , _rec_enable_group (new ControlGroup (RecEnableAutomation)) - , _gain_group (new ControlGroup (GainAutomation)) + , _gain_group (new GainControlGroup ()) , _monitoring_group (new ControlGroup (MonitoringAutomation)) { _xml_node_name = X_("RouteGroup"); @@ -408,7 +408,11 @@ RouteGroup::set_relative (bool yn, void* /*src*/) if (is_relative() == yn) { return; } + _relative = yn; + + push_to_groups (); + send_change (PropertyChange (Properties::group_relative)); _session.set_dirty (); } @@ -542,6 +546,12 @@ RouteGroup::post_set (PBD::PropertyChange const &) void RouteGroup::push_to_groups () { + if (is_relative()) { + _gain_group->set_mode (ControlGroup::Mode (_gain_group->mode()|ControlGroup::Relative)); + } else { + _gain_group->set_mode (ControlGroup::Mode (_gain_group->mode()&~ControlGroup::Relative)); + } + if (_active) { _gain_group->set_active (is_gain()); _solo_group->set_active (is_solo()); |