From b890cf73ad54adfff08b181694ad1d42b6fe2b7f Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 17 Mar 2019 17:19:02 +0100 Subject: [PATCH] Prepare to configure procs only once - fix missing panners During session load, all earlier configure_processors() calls were useless and not taking I/O into account! The Delivery ::pan_out() needs _output I/O ports in order to correctly report the correct port-count! This worked in earlier versions because Config->map_parameters() triggered [two] processor re-configs via ::listen_position_changed(). That behavior was changed in 1af123465c290664 --- libs/ardour/session_state.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index b7c4faf5a4..1a25fd4e36 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -316,6 +316,19 @@ Session::post_engine_init () config.map_parameters (ft); _butler->map_parameters (); + /* Configure all processors; now that the + * engine is running, ports are re-established, + * and IOChange are complete. + */ + { + Glib::Threads::Mutex::Lock lx (AudioEngine::instance()->process_lock ()); + ProcessorChangeBlocker pcb (this); + boost::shared_ptr r = routes.reader (); + for (RouteList::iterator i = r->begin(); i != r->end(); ++i) { + (*i)->configure_processors (0); + } + } + /* Reset all panners */ Delivery::reset_panners ();