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
This commit is contained in:
Paul Davis 2009-09-17 02:58:40 +00:00
parent bd82dfce94
commit 58c2acc99e
4 changed files with 32 additions and 33 deletions

View 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;

View 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

View 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;

View 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;