From 43f58f88a693d04f65d19e7520bd74036baa9c67 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 31 May 2022 18:53:41 +0200 Subject: [PATCH] Allow input meters without session when backend is connected This also fixes a race with ARDOUR::AudioEngine::start() emitting a Running() signal being emitted without a valid session. --- gtk2_ardour/recorder_ui.cc | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/gtk2_ardour/recorder_ui.cc b/gtk2_ardour/recorder_ui.cc index 62a611fa18..1affc21574 100644 --- a/gtk2_ardour/recorder_ui.cc +++ b/gtk2_ardour/recorder_ui.cc @@ -559,13 +559,16 @@ RecorderUI::start_updating () PortManager::MIDIInputPorts const mip (AudioEngine::instance ()->midi_input_ports ()); size_t iop_audio = 0; - size_t iop_midi = 0; - boost::shared_ptr iop (_session->io_plugs ()); - for (auto& p : *iop) { - PortManager::AudioInputPorts const& aip (p->audio_input_ports ()); - PortManager::MIDIInputPorts const& mip (p->midi_input_ports ()); - iop_audio += aip.size (); - iop_midi += mip.size (); + size_t iop_midi = 0; + boost::shared_ptr iop; + if (_session) { + iop = _session->io_plugs (); + for (auto& p : *iop) { + PortManager::AudioInputPorts const& aip (p->audio_input_ports ()); + PortManager::MIDIInputPorts const& mip (p->midi_input_ports ()); + iop_audio += aip.size (); + iop_midi += mip.size (); + } } if (aip.size () + mip.size () + iop_audio + iop_midi == 0) { @@ -604,8 +607,10 @@ RecorderUI::start_updating () set_connections (i->first); } - for (auto& p : *iop) { - io_plugin_add (p); + if (iop) { + for (auto const& p : *iop) { + io_plugin_add (p); + } } update_io_widget_labels ();