diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-09 15:17:29 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-09 15:17:43 -0400 |
commit | f06187735d9518623a6f1f3da573b401e77401bb (patch) | |
tree | f5d8878fe6936d65c3840a500ac141b6424dad79 /gtk2_ardour | |
parent | a228643e402d8f1fb07da88eba960ec368e23dda (diff) |
initial work on adding access to h/w control apps when ardour starts JACK
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/engine_dialog.cc | 40 | ||||
-rw-r--r-- | gtk2_ardour/engine_dialog.h | 5 |
2 files changed, 42 insertions, 3 deletions
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index f858f56b17..b5a59af642 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -63,7 +63,7 @@ EngineControl::EngineControl () , output_channels (output_channels_adjustment) , ports_adjustment (128, 8, 1024, 1, 16) , ports_spinner (ports_adjustment) - , realtime_button (_("Realtime")) + , control_app_button (_("Launch Control App")) , basic_packer (9, 3) { build_notebook (); @@ -71,6 +71,15 @@ EngineControl::EngineControl () get_vbox()->set_border_width (12); get_vbox()->pack_start (notebook); + Gtk::HBox* hpacker = manage (new HBox); + hpacker->pack_start (control_app_button, false, false); + hpacker->show (); + control_app_button.show(); + get_vbox()->pack_start (*hpacker); + + control_app_button.signal_clicked().connect (mem_fun (*this, &EngineControl::control_app_button_clicked)); + manage_control_app_sensitivity (); + add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); add_button (Gtk::Stock::OK, Gtk::RESPONSE_OK); add_button (Gtk::Stock::APPLY, Gtk::RESPONSE_APPLY); @@ -347,6 +356,8 @@ EngineControl::device_changed () buffer_size_combo.set_active_text (s.front()); show_buffer_duration (); + manage_control_app_sensitivity (); + maybe_set_state (); } @@ -700,9 +711,12 @@ EngineControl::setup_engine (bool start) state->active = true; if (start) { - return ARDOUR::AudioEngine::instance()->start(); + if (ARDOUR::AudioEngine::instance()->start()) { + return -1; + } } + manage_control_app_sensitivity (); return 0; } catch (...) { @@ -773,3 +787,25 @@ EngineControl::get_device_name () const return device_combo.get_active_text (); } +void +EngineControl::control_app_button_clicked () +{ + boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend(); + + if (!backend) { + return; + } + + backend->launch_control_app(); +} + +void +EngineControl::manage_control_app_sensitivity () +{ + boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend(); + if (backend && backend->have_control_app()) { + control_app_button.set_sensitive (true); + } else { + control_app_button.set_sensitive (false); + } +} diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index deaa0afa54..97d41995fa 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -68,6 +68,8 @@ class EngineControl : public ArdourDialog { Gtk::Adjustment ports_adjustment; Gtk::SpinButton ports_spinner; + Gtk::Button control_app_button; + /* JACK specific */ Gtk::CheckButton realtime_button; @@ -80,7 +82,6 @@ class EngineControl : public ArdourDialog { Gtk::CheckButton hw_meter_button; Gtk::CheckButton verbose_output_button; - Gtk::ComboBoxText preset_combo; Gtk::ComboBoxText serverpath_combo; Gtk::ComboBoxText driver_combo; @@ -150,6 +151,8 @@ class EngineControl : public ArdourDialog { void build_notebook (); void on_response (int); + void control_app_button_clicked (); + void manage_control_app_sensitivity (); }; #endif /* __gtk2_ardour_engine_dialog_h__ */ |