summaryrefslogtreecommitdiff
path: root/libs/ardour/route_group.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-06-10 16:59:27 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-06-10 16:59:34 -0400
commitec8a4de01596c162c1529f3021dfc432bf66dfe8 (patch)
tree690f1a78a9d538ecda8ec6f80673207ce2092980 /libs/ardour/route_group.cc
parent1695de335db34e7d35de25454e3a33e560d81ae0 (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.cc12
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());