summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-09-17 02:58:40 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-09-17 02:58:40 +0000
commit58c2acc99ef442f1a7627d6746f10084889f478a (patch)
treede245456ba32ed5f0141d2aec10e62ca4150c6f3
parentbd82dfce946a22eb23e6b3582726ce186a52c4b6 (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.cc5
-rw-r--r--gtk2_ardour/engine_dialog.cc9
-rw-r--r--gtk2_ardour/engine_dialog.h3
-rw-r--r--gtk2_ardour/new_session_dialog.cc48
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;