summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/rc_option_editor.cc9
-rw-r--r--libs/ardour/ardour/internal_send.h1
-rw-r--r--libs/ardour/ardour/rc_configuration_vars.h2
-rw-r--r--libs/ardour/internal_send.cc17
-rw-r--r--libs/surfaces/osc/osc.cc4
-rw-r--r--libs/surfaces/osc/osc_cue_observer.cc18
-rw-r--r--libs/surfaces/osc/osc_cue_observer.h1
7 files changed, 29 insertions, 23 deletions
diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc
index 08d55a8f0e..b7a6d367bf 100644
--- a/gtk2_ardour/rc_option_editor.cc
+++ b/gtk2_ardour/rc_option_editor.cc
@@ -2697,6 +2697,15 @@ RCOptionEditor::RCOptionEditor ()
sigc::mem_fun (*_rc_config, &RCConfiguration::get_link_send_and_route_panner),
sigc::mem_fun (*_rc_config, &RCConfiguration::set_link_send_and_route_panner)
));
+
+ add_option (_("Mixer"), new OptionEditorHeading (_("Send Controls")));
+ add_option (_("Mixer"),
+ new BoolOption (
+ "hiding-aux-hides-connected-sends",
+ _("When Aux Bus is hidden the sends in the prosessor box that feed it will be hidden"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_hiding_aux_hides_connected_sends),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_hiding_aux_hides_connected_sends)
+ ));
}
/* Signal Flow */
diff --git a/libs/ardour/ardour/internal_send.h b/libs/ardour/ardour/internal_send.h
index 8547f73b08..20f268e3d0 100644
--- a/libs/ardour/ardour/internal_send.h
+++ b/libs/ardour/ardour/internal_send.h
@@ -76,6 +76,7 @@ private:
void send_from_going_away ();
void send_to_going_away ();
void send_to_property_changed (const PBD::PropertyChange&);
+ void send_to_pi_change (const PBD::PropertyChange&);
int connect_when_legal ();
void init_gain ();
int use_target (boost::shared_ptr<Route>);
diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h
index 452a0822cc..58aa7e571e 100644
--- a/libs/ardour/ardour/rc_configuration_vars.h
+++ b/libs/ardour/ardour/rc_configuration_vars.h
@@ -142,6 +142,8 @@ CONFIG_VARIABLE (bool, quieten_at_speed, "quieten-at-speed", true)
CONFIG_VARIABLE (bool, link_send_and_route_panner, "link-send-and-route-panner", true)
CONFIG_VARIABLE (std::string, midi_audition_synth_uri, "midi-audition-synth-uri", "@default@")
+CONFIG_VARIABLE (bool, hiding_aux_hides_connected_sends, "hiding-aux-hides-connected-sends", false)
+
/* click */
CONFIG_VARIABLE (bool, clicking, "clicking", false)
diff --git a/libs/ardour/internal_send.cc b/libs/ardour/internal_send.cc
index 9749dab760..0292badefa 100644
--- a/libs/ardour/internal_send.cc
+++ b/libs/ardour/internal_send.cc
@@ -112,6 +112,9 @@ InternalSend::use_target (boost::shared_ptr<Route> sendto)
_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->io_changed.connect_same_thread (target_connections, boost::bind (&InternalSend::target_io_changed, this));
+ boost::shared_ptr<Stripable> st_to = boost::dynamic_pointer_cast<Stripable> (_send_to);
+ st_to->presentation_info().PropertyChanged.connect_same_thread (target_connections, boost::bind (&InternalSend::send_to_pi_change, this, _1));
+ send_to_pi_change (Properties::hidden);
return 0;
}
@@ -427,6 +430,20 @@ InternalSend::send_to_property_changed (const PropertyChange& what_changed)
}
void
+InternalSend::send_to_pi_change (const PBD::PropertyChange& what_changed)
+{
+ if (what_changed.contains (Properties::hidden)) {
+ boost::shared_ptr<Stripable> st_to = boost::dynamic_pointer_cast<Stripable> (_send_to);
+ if (Config->get_hiding_aux_hides_connected_sends()) {
+ set_display_to_user (!st_to->is_hidden ());
+ } else {
+ set_display_to_user (true);
+ }
+ _send_from->processors_changed (RouteProcessorChange ()); /* EMIT SIGNAL */
+ }
+}
+
+void
InternalSend::set_can_pan (bool yn)
{
if (_panshell) {
diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc
index 24fa6fcdfe..337fefc422 100644
--- a/libs/surfaces/osc/osc.cc
+++ b/libs/surfaces/osc/osc.cc
@@ -6549,10 +6549,6 @@ OSC::cue_new_send (string rt_name, lo_message msg)
boost::shared_ptr<Processor> loc = rt_send->before_processor_for_placement (PreFader);
rt_send->add_aux_send (aux, loc);
boost::shared_ptr<Send> snd = rt_send->internal_send_for (aux);
- if (snd->gain_control() && aux->is_hidden ()) {
- snd->set_display_to_user (false);
- rt_send->processors_changed (RouteProcessorChange ()); /* EMIT SIGNAL */
- }
session->dirty ();
return 0;
} else {
diff --git a/libs/surfaces/osc/osc_cue_observer.cc b/libs/surfaces/osc/osc_cue_observer.cc
index 3a76e6fb71..115fb66024 100644
--- a/libs/surfaces/osc/osc_cue_observer.cc
+++ b/libs/surfaces/osc/osc_cue_observer.cc
@@ -100,7 +100,6 @@ OSCCueObserver::refresh_strip (boost::shared_ptr<ARDOUR::Stripable> new_strip, S
send_gain_message (0, _strip->gain_control(), true);
send_init ();
- hidden_changed ();
tick_enable = true;
tick ();
@@ -205,9 +204,6 @@ OSCCueObserver::send_restart ()
void
OSCCueObserver::name_changed (const PBD::PropertyChange& what_changed, uint32_t id)
{
- if (_hidden != _strip->is_hidden ()) {
- hidden_changed ();
- }
if (!what_changed.contains (ARDOUR::Properties::name)) {
return;
}
@@ -223,20 +219,6 @@ OSCCueObserver::name_changed (const PBD::PropertyChange& what_changed, uint32_t
}
void
-OSCCueObserver::hidden_changed ()
-{
- _hidden = _strip->is_hidden ();
- for (uint32_t i = 0; i < sends.size(); i++) {
- boost::shared_ptr<Route> r = boost::dynamic_pointer_cast<Route> (sends[i]);
- boost::shared_ptr<Send> send = r->internal_send_for (boost::dynamic_pointer_cast<Route> (_strip));
- if (_hidden == send->display_to_user ()) {
- send->set_display_to_user (!_hidden);
- r->processors_changed (RouteProcessorChange ()); /* EMIT SIGNAL */
- }
- }
-}
-
-void
OSCCueObserver::send_change_message (string path, uint32_t id, boost::shared_ptr<Controllable> controllable)
{
if (id) {
diff --git a/libs/surfaces/osc/osc_cue_observer.h b/libs/surfaces/osc/osc_cue_observer.h
index f85eb1e3d9..0863032732 100644
--- a/libs/surfaces/osc/osc_cue_observer.h
+++ b/libs/surfaces/osc/osc_cue_observer.h
@@ -63,7 +63,6 @@ class OSCCueObserver
std::vector<float> _last_gain;
void name_changed (const PBD::PropertyChange& what_changed, uint32_t id);
- void hidden_changed (void);
void send_change_message (std::string path, uint32_t id, boost::shared_ptr<PBD::Controllable> controllable);
void send_gain_message (uint32_t id, boost::shared_ptr<PBD::Controllable> controllable, bool force);
void send_enabled_message (std::string path, uint32_t id, boost::shared_ptr<ARDOUR::Processor> proc);