use program-name for internal ports
[ardour.git] / gtk2_ardour / engine_dialog.cc
index 625b476acca5b6baf3c20e5bbe8cb6369b50b890..e6c787359fab728278b555bb443cf75fe28d75e9 100644 (file)
@@ -607,7 +607,13 @@ EngineControl::build_full_control_notebook ()
        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++;
 }
 
@@ -800,12 +806,18 @@ EngineControl::update_sensitivity ()
                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 ();
        }
@@ -920,7 +932,7 @@ EngineControl::backend_changed ()
        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;
@@ -936,12 +948,9 @@ EngineControl::backend_changed ()
 
        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
                 */
@@ -1210,7 +1219,7 @@ EngineControl::get_sample_rates_for_all_devices ()
        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 ());
        }
@@ -1282,7 +1291,7 @@ EngineControl::get_buffer_sizes_for_all_devices ()
        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 ());
        }
@@ -1922,7 +1931,7 @@ EngineControl::set_current_state (const State& state)
        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.
@@ -2396,7 +2405,7 @@ EngineControl::get_backend () const
 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 "";