better behaviour when JACK fails to start from "within" ardour. still not quite there yet
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 17 Sep 2009 02:58:40 +0000 (02:58 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 17 Sep 2009 02:58:40 +0000 (02:58 +0000)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@5671 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/ardour_ui.cc
gtk2_ardour/engine_dialog.cc
gtk2_ardour/engine_dialog.h
gtk2_ardour/new_session_dialog.cc

index 4f57dec90516910d382265328717c06cb6c4ade5..d5785ed9d9f365f535af3e4003ea9f260f698282 100644 (file)
@@ -2314,7 +2314,10 @@ ARDOUR_UI::get_session_parameters (bool backend_audio_is_running, bool should_be
                        flush_pending ();
 
                        new_session_dialog->set_existing_session (false);
-                       new_session_dialog->set_current_page (2);
+                       new_session_dialog->set_current_page (0); // new engine page
+                       new_session_dialog->engine_control.unset_interface_chosen ();
+                       cerr << "go back and show the engine setup tab again , beir = "
+                            << backend_audio_is_running << endl;
 
                        response = Gtk::RESPONSE_NONE;
                        goto try_again;
index f6433247206d48b661ade9b72b2ed26b43a40a8c..90151fb85d516f43a8b1189eff45c35b57fdf83e 100644 (file)
@@ -884,15 +884,6 @@ EngineControl::driver_changed ()
                hw_meter_button.set_sensitive (false);
                monitor_button.set_sensitive (false);
        }
-
-       interface_combo.signal_changed().connect (mem_fun (*this, &EngineControl::emit_interface_chosen));
-}
-
-void
-EngineControl::emit_interface_chosen ()
-{
-       cerr << "interface combo changed\n";
-       InterfaceChosen(); 
 }
 
 uint32_t
index 6fc075271c15d83796bdeb8b7d0b1e6e4ec9be9e..6dad930474a00bb716a5f722ad7e76e0e7fb170a 100644 (file)
@@ -25,12 +25,11 @@ class EngineControl : public Gtk::VBox {
        void discover_servers ();
 
        bool interface_chosen () const { return _interface_chosen; }
+       void unset_interface_chosen() { _interface_chosen = false; }
        bool was_used() const { return _used; }
        XMLNode& get_state ();
        void set_state (const XMLNode&);
 
-       sigc::signal<void> InterfaceChosen;
-       void emit_interface_chosen(); /* grr, need to figure out how to connect signalsl directly */
 
   private:
        Gtk::Adjustment periods_adjustment;
index 7799131737bf7af0ccf8bee49258f22d8ce06d73..af514fee0507d7be1bf4072e51ccc6562983d3d0 100644 (file)
@@ -489,28 +489,32 @@ NewSessionDialog::run ()
 void
 NewSessionDialog::set_have_engine (bool yn)
 {
-       if (yn) {
-               m_notebook->remove_page (engine_control);
-               page_set = Pages (page_set & ~EnginePage);
-       } else {
-               if (!(page_set & EnginePage)) {
-                       engine_control.discover_servers ();
-                       if (engine_control.interface_chosen()) {
-                               m_notebook->append_page (engine_control, _("Audio Setup"));
-                               m_notebook->show_all_children();
-                               page_set = Pages (page_set | EnginePage);
-                       } else {
-                               /* no interface ever selected - make it the first and only page */
-                               m_notebook->prepend_page (engine_control, _("Audio Setup"));
-                               if (page_set & NewPage) {
-                                       m_notebook->remove_page (*new_session_table);
-                               }
-                               if (page_set & OpenPage) {
-                                       m_notebook->remove_page (*open_session_vbox);
-                               }
-                               m_notebook->show_all_children();
-                               page_set = Pages (EnginePage);
+
+       m_notebook->remove_page (engine_control);
+       page_set = Pages (page_set & ~EnginePage);
+       
+       if (!yn) {
+
+               engine_control.discover_servers ();
+
+               if (engine_control.interface_chosen()) {
+                       m_notebook->append_page (engine_control, _("Audio Setup"));
+                       m_notebook->show_all_children();
+                       page_set = Pages (page_set | EnginePage);
+               } else {
+                       m_notebook->prepend_page (engine_control, _("Audio Setup"));
+                       page_set = Pages (page_set | EnginePage);
+
+                       /* no interface ever selected - make it the first and only page */
+                       if (page_set & NewPage) {
+                               m_notebook->remove_page (*new_session_table);
+                               page_set = Pages (page_set & ~NewPage);
                        }
+                       if (page_set & OpenPage) {
+                               m_notebook->remove_page (*open_session_vbox);
+                               page_set = Pages (page_set & ~OpenPage);
+                       }
+                       m_notebook->show_all_children();
                }
        }
 }
@@ -766,6 +770,8 @@ NewSessionDialog::which_page () const
 {
        int num = m_notebook->get_current_page();
 
+       cerr << "current page set = " << std::hex << page_set << std::dec << endl;
+
        if (page_set == NewPage) {
                return NewPage;