diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2020-04-24 12:00:02 -0600 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2020-04-24 12:00:02 -0600 |
commit | 75b9689f0c2d16911e872b7f583eb0ab3943ab07 (patch) | |
tree | e7ee0b4a3c2931c9486be0ea41ab4648949c0a0d /gtk2_ardour | |
parent | 12b48fff76306136fc6d761b99e8fb7388f1eb01 (diff) |
only update port lists when a TransportMastersWidget is actually mapped
The overhead of rebuilding for every port registration and unregistration was absurd
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/transport_masters_dialog.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gtk2_ardour/transport_masters_dialog.cc b/gtk2_ardour/transport_masters_dialog.cc index 9fe78725d2..26e49ebd98 100644 --- a/gtk2_ardour/transport_masters_dialog.cc +++ b/gtk2_ardour/transport_masters_dialog.cc @@ -282,6 +282,10 @@ TransportMastersWidget::idle_remove (TransportMastersWidget::Row* row) void TransportMastersWidget::update_ports () { + if (!is_mapped()) { + return; + } + { PBD::Unwinder<bool> uw (ignore_active_change, true); vector<string> inputs; @@ -509,6 +513,10 @@ TransportMastersWidget::Row::build_port_list (DataType type) bool input_found = false; int n; + if (input->children().empty()) { + return; + } + port_combo.set_model (input); Gtk::TreeModel::Children children = input->children(); @@ -654,6 +662,7 @@ TransportMastersWidget::on_map () { update_connection = ARDOUR_UI::Clock.connect (sigc::mem_fun (*this, &TransportMastersWidget::update)); Gtk::VBox::on_map (); + update_ports (); } void |