From d6b36a13a127d9b152cfe12d596ea862773f9923 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 17 Apr 2017 21:15:12 +0200 Subject: [PATCH] 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. --- libs/ardour/route.cc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 765a62e3fd..4f0f5dbc1c 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -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 (); }