diff options
author | Robin Gareus <robin@gareus.org> | 2018-12-23 21:51:09 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2018-12-23 21:58:56 +0100 |
commit | df90d4f6363965dcdd9c84892a92c4e11daf06d1 (patch) | |
tree | 7aff2b947c105ff95fe493a6b75f51b4fbf584fe /gtk2_ardour/engine_dialog.cc | |
parent | 79e247e00a6812c989405a560d6ff8debb413eb5 (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.cc | 31 |
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 |