summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2020-04-24 12:00:02 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2020-04-24 12:00:02 -0600
commit75b9689f0c2d16911e872b7f583eb0ab3943ab07 (patch)
treee7ee0b4a3c2931c9486be0ea41ab4648949c0a0d /gtk2_ardour
parent12b48fff76306136fc6d761b99e8fb7388f1eb01 (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.cc9
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