, ports_spinner (ports_adjustment)
, control_app_button (_("Device Control Panel"))
, midi_devices_button (_("Midi Device Setup"))
+ , stop_engine_button (_("Stop (Reconfigure)"))
, lm_measure_label (_("Measure"))
, lm_use_button (_("Use results"))
, lm_back_button (_("Back to settings ... (ignore results)"))
get_vbox()->set_border_width (12);
get_vbox()->pack_start (notebook);
- get_action_area()->pack_start (engine_status);
- engine_status.show();
-
/* need a special function to print "all available channels" when the
* channel counts hit zero.
*/
midi_devices_button.set_name ("generic button");
midi_devices_button.set_can_focus(true);
- control_app_button.signal_clicked().connect (mem_fun (*this, &EngineControl::control_app_button_clicked));
+ control_app_button.signal_clicked.connect (mem_fun (*this, &EngineControl::control_app_button_clicked));
+ control_app_button.set_name ("generic button");
+ control_app_button.set_can_focus(true);
manage_control_app_sensitivity ();
+ stop_engine_button.signal_clicked.connect (mem_fun (*this, &EngineControl::stop_engine_button_clicked));
+ stop_engine_button.set_sensitive (false);
+ stop_engine_button.set_name ("generic button");
+ stop_engine_button.set_can_focus(true);
+
cancel_button = add_button (Gtk::Stock::CLOSE, Gtk::RESPONSE_CANCEL);
apply_button = add_button (Gtk::Stock::APPLY, Gtk::RESPONSE_APPLY);
ok_button = add_button (Gtk::Stock::OK, Gtk::RESPONSE_OK);
basic_packer.attach (*label, 0, 1, 0, 1, xopt, (AttachOptions) 0);
basic_packer.attach (backend_combo, 1, 2, 0, 1, xopt, (AttachOptions) 0);
+ basic_packer.attach (engine_status, 2, 3, 0, 1, xopt, (AttachOptions) 0);
+ engine_status.show();
+
+ basic_packer.attach (stop_engine_button, 3, 4, 0, 1, xopt, xopt);
+
lm_button_audio.signal_clicked.connect (sigc::mem_fun (*this, &EngineControl::calibrate_audio_latency));
lm_button_audio.set_name ("generic button");
lm_button_audio.set_can_focus(true);
label = manage (left_aligned_label (_("MIDI System:")));
basic_packer.attach (*label, 0, 1, row, row + 1, xopt, (AttachOptions) 0);
basic_packer.attach (midi_option_combo, 1, 2, row, row + 1, SHRINK, (AttachOptions) 0);
+#if ! defined __APPLE__ && ! defined PLATFORM_WINDOWS // => linux, YAY
+ /* Currently the only backend with dedicated Midi setup is ALSA.
+ * lot of people complain that this is greyed out
+ * "I can't use MIDI, the setup is greyed out"
+ */
basic_packer.attach (midi_devices_button, 3, 4, row, row+1, xopt, xopt);
+#endif
row++;
}
if (!backend) {
ok_button->set_sensitive (false);
apply_button->set_sensitive (false);
+ stop_engine_button.set_sensitive (false);
return;
}
* Currently there is no way to manually stop the
* engine in order to re-configure it.
* This needs to remain sensitive for now.
+ *
+ * (it's also handy to implicily
+ * re-start the engine)
*/
buffer_size_combo.set_sensitive (true);
#else
valid = false;
}
+ if (ARDOUR::AudioEngine::instance()->running() && _have_control) {
+ input_device_combo.set_sensitive (false);
+ output_device_combo.set_sensitive (false);
+ device_combo.set_sensitive (false);
+ driver_combo.set_sensitive (false);
+ stop_engine_button.set_sensitive (true);
+ stop_engine_button.show ();
+ } else {
+ input_device_combo.set_sensitive (true);
+ output_device_combo.set_sensitive (true);
+ device_combo.set_sensitive (true);
+ if (backend->requires_driver_selection() && get_popdown_string_count(driver_combo) > 0) {
+ driver_combo.set_sensitive (true);
+ } else {
+ driver_combo.set_sensitive (false);
+ }
+ stop_engine_button.set_sensitive (false);
+ stop_engine_button.hide ();
+ }
+
if (valid || !_have_control) {
ok_button->set_sensitive (true);
apply_button->set_sensitive (true);
string backend_name = backend_combo.get_active_text();
boost::shared_ptr<ARDOUR::AudioBackend> backend;
- if (!(backend = ARDOUR::AudioEngine::instance()->set_backend (backend_name, "ardour", ""))) {
+ if (!(backend = ARDOUR::AudioEngine::instance()->set_backend (backend_name, downcase (PROGRAM_NAME), ""))) {
/* eh? setting the backend failed... how ? */
/* A: stale config contains a backend that does not exist in current build */
return;
if (backend->requires_driver_selection()) {
if (set_driver_popdown_strings ()) {
- driver_combo.set_sensitive (true);
driver_changed ();
}
-
} else {
- driver_combo.set_sensitive (false);
/* this will change the device text which will cause a call to
* device changed which will set up parameters
*/
vector<float> all_rates;
if (backend->use_separate_input_and_output_devices ()) {
- all_rates = backend->available_sample_rates (get_input_device_name (), get_output_device_name ());
+ all_rates = backend->available_sample_rates2 (get_input_device_name (), get_output_device_name ());
} else {
all_rates = backend->available_sample_rates (get_device_name ());
}
vector<uint32_t> all_sizes;
if (backend->use_separate_input_and_output_devices ()) {
- all_sizes = backend->available_buffer_sizes (get_input_device_name (), get_output_device_name ());
+ all_sizes = backend->available_buffer_sizes2 (get_input_device_name (), get_output_device_name ());
} else {
all_sizes = backend->available_buffer_sizes (get_device_name ());
}
boost::shared_ptr<ARDOUR::AudioBackend> backend;
if (!(backend = ARDOUR::AudioEngine::instance ()->set_backend (
- state->backend, "ardour", ""))) {
+ state->backend, downcase (PROGRAM_NAME), ""))) {
DEBUG_ECONTROL (string_compose ("Unable to set backend to %1", state->backend));
// this shouldn't happen as the invalid backend names should have been
// removed from the list of states.
string
EngineControl::get_driver () const
{
- if (driver_combo.get_sensitive() && driver_combo.get_parent()) {
+ if (driver_combo.get_parent()) {
return driver_combo.get_active_text ();
} else {
return "";
backend->launch_control_app ();
}
+void
+EngineControl::stop_engine_button_clicked ()
+{
+ ARDOUR::AudioEngine::instance()->stop ();
+}
+
void
EngineControl::manage_control_app_sensitivity ()
{
connect_disconnect_button.show();
started_at_least_once = true;
- engine_status.set_markup(string_compose ("<span foreground=\"green\">%1</span>", _("Active")));
+ if (_have_control) {
+ engine_status.set_markup(string_compose ("<span foreground=\"green\">%1</span>", _("Running")));
+ } else {
+ engine_status.set_markup(string_compose ("<span foreground=\"green\">%1</span>", _("Connected")));
+ }
update_sensitivity();
}
connect_disconnect_button.set_label (string_compose (_("Connect to %1"), backend->name()));
connect_disconnect_button.show();
- if (ARDOUR::Profile->get_mixbus()) {
- engine_status.set_markup("");
- } else {
- engine_status.set_markup(string_compose ("<span foreground=\"red\">%1</span>", _("Inactive")));
- }
-
+ engine_status.set_markup(X_(""));
update_sensitivity();
}