diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-09-17 02:58:40 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-09-17 02:58:40 +0000 |
commit | 58c2acc99ef442f1a7627d6746f10084889f478a (patch) | |
tree | de245456ba32ed5f0141d2aec10e62ca4150c6f3 | |
parent | bd82dfce946a22eb23e6b3582726ce186a52c4b6 (diff) |
better behaviour when JACK fails to start from "within" ardour. still not quite there yet
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@5671 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 5 | ||||
-rw-r--r-- | gtk2_ardour/engine_dialog.cc | 9 | ||||
-rw-r--r-- | gtk2_ardour/engine_dialog.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/new_session_dialog.cc | 48 |
4 files changed, 32 insertions, 33 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 4f57dec905..d5785ed9d9 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -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; diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index f643324720..90151fb85d 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -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 diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 6fc075271c..6dad930474 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -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; diff --git a/gtk2_ardour/new_session_dialog.cc b/gtk2_ardour/new_session_dialog.cc index 7799131737..af514fee05 100644 --- a/gtk2_ardour/new_session_dialog.cc +++ b/gtk2_ardour/new_session_dialog.cc @@ -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; |