void
EngineControl::on_map ()
{
- if (!ARDOUR_UI::instance()->session_loaded && !PublicEditor::_instance) {
+ if (!ARDOUR_UI::instance()->the_session () && !PublicEditor::_instance) {
set_type_hint (Gdk::WINDOW_TYPE_HINT_NORMAL);
} else if (UIConfiguration::instance().get_all_floating_windows_are_dialogs()) {
set_type_hint (Gdk::WINDOW_TYPE_HINT_DIALOG);
if (get_popdown_string_count (sample_rate_combo) > 0) {
bool allow_to_set_rate = false;
if (!engine_running) {
- if (!ARDOUR_UI::instance()->session_loaded) {
+ if (!ARDOUR_UI::instance()->the_session ()) {
// engine is not running, no session loaded -> anything goes.
allow_to_set_rate = true;
} else if (_desired_sample_rate > 0 && get_rate () != _desired_sample_rate) {
} 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
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
if (!s.empty()) {
if (ARDOUR::AudioEngine::instance()->running()) {
sample_rate_combo.set_active_text (rate_as_string (backend->sample_rate()));
- } else if (ARDOUR_UI::instance()->session_loaded) {
+ } else if (ARDOUR_UI::instance()->the_session ()) {
float active_sr = ARDOUR_UI::instance()->the_session()->nominal_sample_rate ();
if (std::find (sr.begin (), sr.end (), active_sr) == sr.end ()) {
if (ARDOUR::AudioEngine::instance()->running()) {
ARDOUR::AudioEngine::instance()->stop ();
} else {
- if (!ARDOUR_UI::instance()->session_loaded) {
+ if (!ARDOUR_UI::instance()->the_session ()) {
pop_splash ();
hide ();
ARDOUR::GUIIdle ();
}
start_engine ();
- if (!ARDOUR_UI::instance()->session_loaded) {
+ if (!ARDOUR_UI::instance()->the_session ()) {
ArdourDialog::on_response (RESPONSE_OK);
}
}
return;
}
PBD::Unwinder<uint32_t> protect_ignore_changes (ignore_changes, ignore_changes + 1); // ??
- list_devices ();
+ 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
if (ARDOUR::AudioEngine::instance()->running()) {
stop_engine ();
} else {
- if (!ARDOUR_UI::instance()->session_loaded) {
+ if (!ARDOUR_UI::instance()->the_session ()) {
pop_splash ();
hide ();
ARDOUR::GUIIdle ();
}
start_engine ();
- if (!ARDOUR_UI::instance()->session_loaded) {
+ if (!ARDOUR_UI::instance()->the_session ()) {
ArdourDialog::on_response (RESPONSE_OK);
}
}