Flush processor (re-activate) on route active change

(flush reverb tails etc)

PS. That comment "from RT audio thread" was wrong.
Route::flush_processors () is called from flush_all_inserts()
from Session::non_realtime_stop() which is not in rt-context.
Besides, the processor-lock regardless of the process_lock.
This commit is contained in:
Robin Gareus 2017-04-17 21:15:12 +02:00
parent 515c0687b4
commit d6b36a13a1

View File

@ -3614,10 +3614,6 @@ Route::silent_roll (pframes_t nframes, framepos_t /*start_frame*/, framepos_t /*
void
Route::flush_processors ()
{
/* XXX shouldn't really try to take this lock, since
this is called from the RT audio thread.
*/
Glib::Threads::RWLock::ReaderLock lm (_processor_lock);
for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {
@ -4167,6 +4163,7 @@ Route::set_active (bool yn, void* src)
_active = yn;
_input->set_active (yn);
_output->set_active (yn);
flush_processors ();
active_changed (); // EMIT SIGNAL
_session.set_dirty ();
}