expose count widgets for duplicate track dialog
[ardour.git] / gtk2_ardour / engine_dialog.cc
index 82b7645161aca86ec337657738a08049788c01d6..5e7d4f5a3ea956737843867463a88d5a81579162 100644 (file)
@@ -186,7 +186,8 @@ EngineControl::EngineControl ()
        lm_measure_button.add (lm_measure_label);
        lm_measure_button.signal_clicked().connect (sigc::mem_fun (*this, &EngineControl::latency_button_clicked));
        lm_use_button.signal_clicked().connect (sigc::mem_fun (*this, &EngineControl::use_latency_button_clicked));
-       lm_back_button_signal = lm_back_button.signal_clicked().connect (sigc::bind (sigc::mem_fun (notebook, &Gtk::Notebook::set_current_page), 0));
+       lm_back_button_signal = lm_back_button.signal_clicked().connect(
+           sigc::mem_fun(*this, &EngineControl::latency_back_button_clicked));
 
        lm_use_button.set_sensitive (false);
 
@@ -726,7 +727,8 @@ EngineControl::enable_latency_tab ()
                lm_back_button_signal = lm_back_button.signal_clicked().connect (sigc::bind (sigc::mem_fun (notebook, &Gtk::Notebook::set_current_page), midi_tab));
                lm_preamble.hide ();
        } else {
-               lm_back_button_signal = lm_back_button.signal_clicked().connect (sigc::bind (sigc::mem_fun (notebook, &Gtk::Notebook::set_current_page), 0));
+               lm_back_button_signal = lm_back_button.signal_clicked().connect(
+                   sigc::mem_fun(*this, &EngineControl::latency_back_button_clicked));
                lm_preamble.show ();
        }
 
@@ -1014,6 +1016,11 @@ EngineControl::backend_changed ()
         */
        engine_stopped (); // set "active/inactive"
 
+       if (!_have_control) {
+               // set settings from backend that we do have control over
+               set_active_text_if_present (buffer_size_combo, bufsize_as_string (backend->buffer_size()));
+       }
+
        if (!ignore_changes) {
                maybe_display_saved_state ();
        }
@@ -2013,6 +2020,13 @@ EngineControl::set_current_state (const State& state)
        // do the right thing
        backend_combo.set_active_text (state->backend);
 
+       if (!ARDOUR::AudioEngine::instance()->setup_required ()) {
+               backend_changed ();
+               // we don't have control don't restore state
+               return true;
+       }
+
+
        if (!state->driver.empty ()) {
                if (!backend->requires_driver_selection ()) {
                        DEBUG_ECONTROL ("Backend should require driver selection");
@@ -2802,6 +2816,13 @@ EngineControl::latency_button_clicked ()
        }
 }
 
+void
+EngineControl::latency_back_button_clicked ()
+{
+       ARDOUR::AudioEngine::instance()->stop(true);
+       notebook.set_current_page(0);
+}
+
 void
 EngineControl::use_latency_button_clicked ()
 {
@@ -2831,9 +2852,8 @@ EngineControl::use_latency_button_clicked ()
 
                /* back to settings page */
                notebook.set_current_page (0);
-}
        }
-
+}
 
 bool
 EngineControl::on_delete_event (GdkEventAny* ev)