summaryrefslogtreecommitdiff
path: root/gtk2_ardour/engine_dialog.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2018-12-23 21:51:09 +0100
committerRobin Gareus <robin@gareus.org>2018-12-23 21:58:56 +0100
commitdf90d4f6363965dcdd9c84892a92c4e11daf06d1 (patch)
tree7aff2b947c105ff95fe493a6b75f51b4fbf584fe /gtk2_ardour/engine_dialog.cc
parent79e247e00a6812c989405a560d6ff8debb413eb5 (diff)
Engine Dialog MIDI tweaks
* Allow to dynamically en/disable MIDI devices when running * Push midi latencies directly to running backend
Diffstat (limited to 'gtk2_ardour/engine_dialog.cc')
-rw-r--r--gtk2_ardour/engine_dialog.cc31
1 files changed, 31 insertions, 0 deletions
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc
index b883bc352e..bc378afebe 100644
--- a/gtk2_ardour/engine_dialog.cc
+++ b/gtk2_ardour/engine_dialog.cc
@@ -902,6 +902,18 @@ EngineControl::midi_latency_adjustment_changed (Gtk::Adjustment *a, MidiDeviceSe
} else {
device->output_latency = a->get_value();
}
+
+ if (ARDOUR::AudioEngine::instance()->running() && !_measure_midi) {
+ boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend();
+ assert (backend);
+ if (backend->can_change_systemic_latency_when_running () && device->enabled) {
+ if (for_input) {
+ backend->set_systemic_midi_input_latency (device->name, device->input_latency);
+ } else {
+ backend->set_systemic_midi_output_latency (device->name, device->output_latency);
+ }
+ }
+ }
}
void
@@ -909,6 +921,16 @@ EngineControl::midi_device_enabled_toggled (ArdourButton *b, MidiDeviceSettings
b->set_active (!b->get_active());
device->enabled = b->get_active();
refresh_midi_display(device->name);
+
+ if (ARDOUR::AudioEngine::instance()->running()) {
+ boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend();
+ assert (backend);
+ backend->set_midi_device_enabled (device->name, device->enabled);
+ if (backend->can_change_systemic_latency_when_running () && device->enabled) {
+ backend->set_systemic_midi_input_latency (device->name, device->input_latency);
+ backend->set_systemic_midi_output_latency (device->name, device->output_latency);
+ }
+ }
}
void
@@ -3101,7 +3123,16 @@ EngineControl::device_list_changed ()
if (!ARDOUR::AudioEngine::instance()->running()) {
list_devices ();
}
+
midi_option_changed();
+
+ if (notebook.get_current_page() == midi_tab) {
+ if (_midi_devices.empty ()) {
+ notebook.set_current_page (0);
+ } else {
+ refresh_midi_display ();
+ }
+ }
}
void