summaryrefslogtreecommitdiff
path: root/gtk2_ardour/engine_dialog.cc
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/engine_dialog.cc
parenta228643e402d8f1fb07da88eba960ec368e23dda (diff)
initial work on adding access to h/w control apps when ardour starts JACK
Diffstat (limited to 'gtk2_ardour/engine_dialog.cc')
-rw-r--r--gtk2_ardour/engine_dialog.cc40
1 files changed, 38 insertions, 2 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);
+ }
+}