make sure that delivery processors in a soloed route keep working when the route is soloed ; fiddle with sensitivity of mixer strip output button when displaying sends
git-svn-id: svn://localhost/ardour2/branches/3.0@6139 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
908b1c9301
commit
78503905d7
@ -37,6 +37,7 @@
|
||||
#include "ardour/amp.h"
|
||||
#include "ardour/session.h"
|
||||
#include "ardour/audioengine.h"
|
||||
#include "ardour/internal_send.h"
|
||||
#include "ardour/route.h"
|
||||
#include "ardour/route_group.h"
|
||||
#include "ardour/audio_track.h"
|
||||
@ -690,7 +691,21 @@ void
|
||||
MixerStrip::edit_output_configuration ()
|
||||
{
|
||||
if (output_selector == 0) {
|
||||
output_selector = new IOSelectorWindow (_session, _route->output());
|
||||
|
||||
boost::shared_ptr<Send> send;
|
||||
boost::shared_ptr<IO> output;
|
||||
|
||||
if ((send = boost::dynamic_pointer_cast<Send>(_current_delivery)) != 0) {
|
||||
if (!boost::dynamic_pointer_cast<InternalSend>(send)) {
|
||||
output = send->output();
|
||||
} else {
|
||||
output = _route->output ();
|
||||
}
|
||||
} else {
|
||||
output = _route->output ();
|
||||
}
|
||||
|
||||
output_selector = new IOSelectorWindow (_session, output);
|
||||
}
|
||||
|
||||
if (output_selector->is_visible()) {
|
||||
@ -1669,7 +1684,8 @@ MixerStrip::drop_send ()
|
||||
}
|
||||
|
||||
send_gone_connection.disconnect ();
|
||||
|
||||
input_button.set_sensitive (true);
|
||||
output_button.set_sensitive (true);
|
||||
}
|
||||
|
||||
void
|
||||
@ -1690,6 +1706,12 @@ MixerStrip::show_send (boost::shared_ptr<Send> send)
|
||||
panner_ui().set_panner (_current_delivery->panner());
|
||||
panner_ui().setup_pan ();
|
||||
|
||||
input_button.set_sensitive (false);
|
||||
|
||||
if (boost::dynamic_pointer_cast<InternalSend>(send)) {
|
||||
output_button.set_sensitive (false);
|
||||
}
|
||||
|
||||
reset_strip_style ();
|
||||
}
|
||||
|
||||
|
@ -563,6 +563,7 @@ Delivery::target_gain ()
|
||||
} else {
|
||||
desired_gain = _mute_master->mute_gain_at (mp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return desired_gain;
|
||||
|
@ -552,11 +552,22 @@ Route::mod_solo_level (int32_t delta)
|
||||
_solo_level += delta;
|
||||
}
|
||||
|
||||
/* tell main outs what the solo situation is
|
||||
*/
|
||||
{
|
||||
/* tell all delivery processors what the solo situation is, so that they keep
|
||||
delivering even though Session::soloing() is true and they were not
|
||||
explicitly soloed.
|
||||
*/
|
||||
|
||||
Glib::RWLock::ReaderLock rm (_processor_lock);
|
||||
for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {
|
||||
boost::shared_ptr<Delivery> d;
|
||||
|
||||
_main_outs->set_solo_level (_solo_level);
|
||||
_main_outs->set_solo_isolated (_solo_isolated);
|
||||
if ((d = boost::dynamic_pointer_cast<Delivery> (*i)) != 0) {
|
||||
d->set_solo_level (_solo_level);
|
||||
d->set_solo_isolated (_solo_isolated);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user