From fb9f1eff12b67465d5d201e96fafd033ebb92fd9 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 18 Jul 2020 20:09:14 +0200 Subject: [PATCH] Add debug flags to track down #8317 --- libs/ardour/ardour/debug.h | 2 ++ libs/ardour/debug.cc | 2 ++ libs/ardour/io.cc | 6 ++++++ libs/ardour/session.cc | 20 ++++++++++++++++++++ 4 files changed, 30 insertions(+) diff --git a/libs/ardour/ardour/debug.h b/libs/ardour/ardour/debug.h index 10bd90d8a8..f258cb9f7f 100644 --- a/libs/ardour/ardour/debug.h +++ b/libs/ardour/ardour/debug.h @@ -78,6 +78,8 @@ namespace PBD { LIBARDOUR_API extern DebugBits Panning; LIBARDOUR_API extern DebugBits Peaks; LIBARDOUR_API extern DebugBits PluginManager; + LIBARDOUR_API extern DebugBits PortConnectAuto; + LIBARDOUR_API extern DebugBits PortConnectIO; LIBARDOUR_API extern DebugBits Ports; LIBARDOUR_API extern DebugBits ProcessThreads; LIBARDOUR_API extern DebugBits Processors; diff --git a/libs/ardour/debug.cc b/libs/ardour/debug.cc index 0de81ebf1c..4cd5e3cd86 100644 --- a/libs/ardour/debug.cc +++ b/libs/ardour/debug.cc @@ -73,6 +73,8 @@ PBD::DebugBits PBD::DEBUG::OrderKeys = PBD::new_debug_bit ("orderkeys"); PBD::DebugBits PBD::DEBUG::Panning = PBD::new_debug_bit ("panning"); PBD::DebugBits PBD::DEBUG::Peaks = PBD::new_debug_bit ("peaks"); PBD::DebugBits PBD::DEBUG::PluginManager = PBD::new_debug_bit ("pluginmanager"); +PBD::DebugBits PBD::DEBUG::PortConnectAuto = PBD::new_debug_bit ("PortConnectAuto"); +PBD::DebugBits PBD::DEBUG::PortConnectIO = PBD::new_debug_bit ("PortConnectIO"); PBD::DebugBits PBD::DEBUG::Ports = PBD::new_debug_bit ("Ports"); PBD::DebugBits PBD::DEBUG::ProcessThreads = PBD::new_debug_bit ("processthreads"); PBD::DebugBits PBD::DEBUG::Processors = PBD::new_debug_bit ("processors"); diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc index ae8a0a4854..14465479f8 100644 --- a/libs/ardour/io.cc +++ b/libs/ardour/io.cc @@ -168,6 +168,9 @@ IO::disconnect (boost::shared_ptr our_port, string other_port, void* src) /* disconnect it from the source */ + DEBUG_TRACE (DEBUG::PortConnectIO, + string_compose("IO::disconnect %1 from %2\n", our_port->name(), other_port)); + if (our_port->disconnect (other_port)) { error << string_compose(_("IO: cannot disconnect port %1 from %2"), our_port->name(), other_port) << endmsg; return -1; @@ -199,6 +202,9 @@ IO::connect (boost::shared_ptr our_port, string other_port, void* src) /* connect it to the source */ + DEBUG_TRACE (DEBUG::PortConnectIO, + string_compose("IO::connect %1 to %2\n", our_port->name(), other_port)); + if (our_port->connect (other_port)) { return -1; } diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 4b1a302b70..92824c5447 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -6862,6 +6862,12 @@ Session::auto_connect_route (boost::shared_ptr route, bool connect_inputs const ChanCount& output_offset) { Glib::Threads::Mutex::Lock lx (_auto_connect_queue_lock); + + DEBUG_TRACE (DEBUG::PortConnectAuto, + string_compose ("Session::auto_connect_route '%1' ci: %2 is=(%3) os=(%4) io=(%5) oo=(%6)\n", + route->name(), connect_inputs, + input_start, output_start, input_offset, output_offset)); + _auto_connect_queue.push (AutoConnectRequest (route, connect_inputs, input_start, output_start, input_offset, output_offset)); @@ -6917,6 +6923,10 @@ Session::auto_connect (const AutoConnectRequest& ar) ? ChanCount::max(ar.input_offset, ar.output_offset) : ar.output_offset; + DEBUG_TRACE (DEBUG::PortConnectAuto, + string_compose ("Session::auto_connect '%1' iop: %2 is=(%3) os=(%4) Eio=(%5) Eoo=(%6)\n", + route->name(), in_out_physical, ar.input_start, ar.output_start, in_offset, out_offset)); + for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) { vector physinputs; vector physoutputs; @@ -6928,6 +6938,10 @@ Session::auto_connect (const AutoConnectRequest& ar) get_physical_ports (physinputs, physoutputs, *t, MidiPortMusic); + DEBUG_TRACE (DEBUG::PortConnectAuto, + string_compose ("Physical MidiPortMusic %1 Ports count in: %2 out %3\n", + (*t).to_string(), physinputs.size(), physoutputs.size())); + if (!physinputs.empty() && ar.connect_inputs) { uint32_t nphysical_in = physinputs.size(); @@ -6939,12 +6953,17 @@ Session::auto_connect (const AutoConnectRequest& ar) } if (!port.empty() && route->input()->connect (route->input()->ports().port(*t, i), port, this)) { + DEBUG_TRACE (DEBUG::PortConnectAuto, "Failed to auto-connect input."); break; } } } if (!physoutputs.empty()) { + DEBUG_TRACE (DEBUG::PortConnectAuto, + string_compose ("Connect %1 outputs # %2 .. %3\n", + (*t).to_string(), ar.output_start.get(*t), route->n_outputs().get(*t))); + uint32_t nphysical_out = physoutputs.size(); for (uint32_t i = ar.output_start.get(*t); i < route->n_outputs().get(*t); ++i) { string port; @@ -6960,6 +6979,7 @@ Session::auto_connect (const AutoConnectRequest& ar) } if (!port.empty() && route->output()->connect (route->output()->ports().port(*t, i), port, this)) { + DEBUG_TRACE (DEBUG::PortConnectAuto, "Failed to auto-connect ouput."); break; } }