summaryrefslogtreecommitdiff
path: root/gtk2_ardour/rc_option_editor.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-03-08 17:04:43 -0700
committerPaul Davis <paul@linuxaudiosystems.com>2019-03-08 17:04:43 -0700
commit4c2e801b5f24bd435f31a71183f89d26bf21838f (patch)
tree2daac3f1c6ea6787c4272579647119fad79be9ac /gtk2_ardour/rc_option_editor.cc
parentb1504f261efe4ccdd47860dce4f2faf787f306ba (diff)
avoid crazy levels of work when MIDI Port Info preferences panel is not visible
Diffstat (limited to 'gtk2_ardour/rc_option_editor.cc')
-rw-r--r--gtk2_ardour/rc_option_editor.cc17
1 files changed, 12 insertions, 5 deletions
diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc
index 6ba4db8b65..ab010ec3a5 100644
--- a/gtk2_ardour/rc_option_editor.cc
+++ b/gtk2_ardour/rc_option_editor.cc
@@ -1823,7 +1823,7 @@ private:
class MidiPortOptions : public OptionEditorMiniPage, public sigc::trackable
{
public:
- MidiPortOptions() {
+ MidiPortOptions() : refill_id (-1) {
setup_midi_port_view (midi_output_view, false);
setup_midi_port_view (midi_input_view, true);
@@ -1853,13 +1853,15 @@ class MidiPortOptions : public OptionEditorMiniPage, public sigc::trackable
midi_output_view.show ();
midi_input_view.show ();
- table.signal_show().connect (sigc::mem_fun (*this, &MidiPortOptions::on_show));
+ table.signal_map().connect (sigc::mem_fun (*this, &MidiPortOptions::on_map));
+ table.signal_unmap().connect (sigc::mem_fun (*this, &MidiPortOptions::on_unmap));
}
void parameter_changed (string const&) {}
void set_state_from_config() {}
- void on_show () {
+ void on_map () {
+
refill ();
AudioEngine::instance()->PortRegisteredOrUnregistered.connect (connections,
@@ -1876,9 +1878,11 @@ class MidiPortOptions : public OptionEditorMiniPage, public sigc::trackable
gui_context());
}
- void refill () {
+ void on_unmap () {
+ connections.drop_connections ();
+ }
- std::cerr << "REFILL MIDI PORTS\n";
+ void refill () {
if (refill_midi_ports (true, midi_input_view)) {
input_label.show ();
@@ -1890,6 +1894,8 @@ class MidiPortOptions : public OptionEditorMiniPage, public sigc::trackable
} else {
output_label.hide ();
}
+
+ refill_id = -1;
}
private:
@@ -1922,6 +1928,7 @@ class MidiPortOptions : public OptionEditorMiniPage, public sigc::trackable
Gtk::TreeView midi_output_view;
Gtk::Label input_label;
Gtk::Label output_label;
+ int refill_id;
void setup_midi_port_view (Gtk::TreeView&, bool with_selection);
bool refill_midi_ports (bool for_input, Gtk::TreeView&);