fix initial AFL/PFL state after session-load

This commit is contained in:
Robin Gareus 2015-10-06 19:10:25 +02:00
parent 83d8db3925
commit ce30132a89

View file

@ -843,6 +843,8 @@ Route::set_solo (bool yn, void *src)
_solo_control->Changed (); /* EMIT SIGNAL */ _solo_control->Changed (); /* EMIT SIGNAL */
} }
assert (Config->get_solo_control_is_listen_control() || !_monitor_send || !_monitor_send->active());
/* XXX TRACKS DEVELOPERS: THIS LOGIC SUGGESTS THAT YOU ARE NOT AWARE OF /* XXX TRACKS DEVELOPERS: THIS LOGIC SUGGESTS THAT YOU ARE NOT AWARE OF
Config->get_solo_mute_overrride(). Config->get_solo_mute_overrride().
*/ */
@ -3682,6 +3684,7 @@ Route::listen_position_changed ()
ProcessorState pstate (this); ProcessorState pstate (this);
if (configure_processors_unlocked (0)) { if (configure_processors_unlocked (0)) {
DEBUG_TRACE (DEBUG::Processors, "---- CONFIGURATION FAILED.\n");
pstate.restore (); pstate.restore ();
configure_processors_unlocked (0); // it worked before we tried to add it ... configure_processors_unlocked (0); // it worked before we tried to add it ...
return; return;
@ -4548,34 +4551,29 @@ Route::setup_invisible_processors ()
if (_monitor_send && !is_monitor ()) { if (_monitor_send && !is_monitor ()) {
assert (!_monitor_send->display_to_user ()); assert (!_monitor_send->display_to_user ());
if (Config->get_solo_control_is_listen_control()) { switch (Config->get_listen_position ()) {
switch (Config->get_listen_position ()) { case PreFaderListen:
case PreFaderListen: switch (Config->get_pfl_position ()) {
switch (Config->get_pfl_position ()) { case PFLFromBeforeProcessors:
case PFLFromBeforeProcessors: new_processors.push_front (_monitor_send);
new_processors.push_front (_monitor_send);
break;
case PFLFromAfterProcessors:
new_processors.insert (amp, _monitor_send);
break;
}
_monitor_send->set_can_pan (false);
break; break;
case AfterFaderListen: case PFLFromAfterProcessors:
switch (Config->get_afl_position ()) { new_processors.insert (amp, _monitor_send);
case AFLFromBeforeProcessors:
new_processors.insert (after_amp, _monitor_send);
break;
case AFLFromAfterProcessors:
new_processors.insert (new_processors.end(), _monitor_send);
break;
}
_monitor_send->set_can_pan (true);
break; break;
} }
} else {
new_processors.insert (new_processors.end(), _monitor_send);
_monitor_send->set_can_pan (false); _monitor_send->set_can_pan (false);
break;
case AfterFaderListen:
switch (Config->get_afl_position ()) {
case AFLFromBeforeProcessors:
new_processors.insert (after_amp, _monitor_send);
break;
case AFLFromAfterProcessors:
new_processors.insert (new_processors.end(), _monitor_send);
break;
}
_monitor_send->set_can_pan (true);
break;
} }
} }