From 8967df460a933a64b1ecbe122aaf8e86146832e0 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 7 May 2020 15:09:55 +0200 Subject: Auditioner: ignore dis/connections during init/shutdown --- libs/ardour/auditioner.cc | 72 ++++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 32 deletions(-) (limited to 'libs/ardour/auditioner.cc') diff --git a/libs/ardour/auditioner.cc b/libs/ardour/auditioner.cc index 6b1921a2f8..6ae58c04be 100644 --- a/libs/ardour/auditioner.cc +++ b/libs/ardour/auditioner.cc @@ -528,46 +528,54 @@ Auditioner::seek_response (sampleoffset_t pos) { void Auditioner::output_changed (IOChange change, void* /*src*/) { - if (change.type & IOChange::ConnectionsChanged) { - string phys; - vector connections; - vector outputs; - _session.engine().get_physical_outputs (DataType::AUDIO, outputs); + if (0 == (change.type & IOChange::ConnectionsChanged)) { + return; + } + if (_session.inital_connect_or_deletion_in_progress ()) { + return; + } + if (_session.reconnection_in_progress ()) { + return; + } - if (_session.monitor_out () && _output->connected_to (_session.monitor_out ()->input ())) { - Config->set_auditioner_output_left ("default"); - Config->set_auditioner_output_right ("default"); - via_monitor = true; - return; - } + string phys; + vector connections; + vector outputs; + _session.engine().get_physical_outputs (DataType::AUDIO, outputs); - if (_output->nth (0)->get_connections (connections)) { - if (outputs.size() > 0) { - phys = outputs[0]; - } - if (phys != connections[0]) { - Config->set_auditioner_output_left (connections[0]); - } else { - Config->set_auditioner_output_left ("default"); - } + if (_session.monitor_out () && _output->connected_to (_session.monitor_out ()->input ())) { + Config->set_auditioner_output_left ("default"); + Config->set_auditioner_output_right ("default"); + via_monitor = true; + return; + } + + if (_output->nth (0)->get_connections (connections)) { + if (outputs.size() > 0) { + phys = outputs[0]; + } + if (phys != connections[0]) { + Config->set_auditioner_output_left (connections[0]); } else { - Config->set_auditioner_output_left (""); + Config->set_auditioner_output_left ("default"); } + } else { + Config->set_auditioner_output_left (""); + } - connections.clear (); + connections.clear (); - if (_output->nth (1)->get_connections (connections)) { - if (outputs.size() > 1) { - phys = outputs[1]; - } - if (phys != connections[0]) { - Config->set_auditioner_output_right (connections[0]); - } else { - Config->set_auditioner_output_right ("default"); - } + if (_output->nth (1)->get_connections (connections)) { + if (outputs.size() > 1) { + phys = outputs[1]; + } + if (phys != connections[0]) { + Config->set_auditioner_output_right (connections[0]); } else { - Config->set_auditioner_output_right (""); + Config->set_auditioner_output_right ("default"); } + } else { + Config->set_auditioner_output_right (""); } } -- cgit v1.2.3