summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-09-09 15:17:29 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-09-09 15:17:43 -0400
commitf06187735d9518623a6f1f3da573b401e77401bb (patch)
treef5d8878fe6936d65c3840a500ac141b6424dad79 /gtk2_ardour
parenta228643e402d8f1fb07da88eba960ec368e23dda (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.cc40
-rw-r--r--gtk2_ardour/engine_dialog.h5
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__ */