summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/ardour/send.h1
-rw-r--r--libs/ardour/route.cc6
-rw-r--r--libs/ardour/send.cc4
-rw-r--r--libs/surfaces/osc/osc.cc5
-rw-r--r--libs/surfaces/osc/osc_cue_observer.cc18
-rw-r--r--libs/surfaces/osc/osc_cue_observer.h2
6 files changed, 35 insertions, 1 deletions
diff --git a/libs/ardour/ardour/send.h b/libs/ardour/ardour/send.h
index c37055cd94..877e38eb17 100644
--- a/libs/ardour/ardour/send.h
+++ b/libs/ardour/ardour/send.h
@@ -43,6 +43,7 @@ public:
uint32_t bit_slot() const { return _bitslot; }
bool display_to_user() const;
+ bool is_aux () const { return _role == Aux; }
boost::shared_ptr<Amp> amp() const { return _amp; }
boost::shared_ptr<PeakMeter> meter() const { return _meter; }
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index d9cee57441..1eca850da3 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -4662,9 +4662,13 @@ Route::setup_invisible_processors ()
/* find visible processors */
for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {
+ boost::shared_ptr<Send> auxsnd = boost::dynamic_pointer_cast<Send> ((*i));
if ((*i)->display_to_user ()) {
new_processors.push_back (*i);
}
+ else if (auxsnd && auxsnd->is_aux ()) {
+ new_processors.push_back (*i);
+ }
}
/* find the amp */
@@ -5642,7 +5646,7 @@ Route::send_pan_azi_controllable (uint32_t n) const
}
}
#endif
-
+
return boost::shared_ptr<AutomationControl>();
}
diff --git a/libs/ardour/send.cc b/libs/ardour/send.cc
index dcea3fd510..a64a62f6a7 100644
--- a/libs/ardour/send.cc
+++ b/libs/ardour/send.cc
@@ -101,6 +101,8 @@ Send::Send (Session& s, boost::shared_ptr<Pannable> p, boost::shared_ptr<MuteMas
_send_delay.reset (new DelayLine (_session, "Send-" + name()));
_thru_delay.reset (new DelayLine (_session, "Thru-" + name()));
+ _display_to_user = true;
+
if (panner_shell()) {
panner_shell()->Changed.connect_same_thread (*this, boost::bind (&Send::panshell_changed, this));
}
@@ -452,6 +454,8 @@ Send::display_to_user () const
if (_role == Listen) {
/* don't make the monitor/control/listen send visible */
return false;
+ } else if (_role == Aux) {
+ return _display_to_user;
}
return true;
diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc
index 8d17a06941..a5238fe748 100644
--- a/libs/surfaces/osc/osc.cc
+++ b/libs/surfaces/osc/osc.cc
@@ -6542,6 +6542,11 @@ OSC::cue_new_send (string rt_name, lo_message msg)
// create send
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 115fb66024..3a76e6fb71 100644
--- a/libs/surfaces/osc/osc_cue_observer.cc
+++ b/libs/surfaces/osc/osc_cue_observer.cc
@@ -100,6 +100,7 @@ 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 ();
@@ -204,6 +205,9 @@ 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;
}
@@ -219,6 +223,20 @@ 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 3dfe49472d..f85eb1e3d9 100644
--- a/libs/surfaces/osc/osc_cue_observer.h
+++ b/libs/surfaces/osc/osc_cue_observer.h
@@ -57,11 +57,13 @@ class OSCCueObserver
ArdourSurface::OSC::OSCSurface* sur;
float _last_meter;
float _last_signal;
+ bool _hidden;
std::vector<uint32_t> gain_timeout;
bool tick_enable;
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);