diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-05-18 13:44:37 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-05-18 13:44:37 +0000 |
commit | c04d9d1975402c514d2feb44d997f0941d1f34c3 (patch) | |
tree | 5d3f31154f0e7703db0e5b11415376db53a5b40b /gtk2_ardour | |
parent | 06df411708c58987802ef10b8c3e2d50aad8e0e4 (diff) |
do not look for (and potentially exit) jack servers if jack is already running
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@5100 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/engine_dialog.cc | 40 | ||||
-rw-r--r-- | gtk2_ardour/engine_dialog.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/new_session_dialog.cc | 1 |
3 files changed, 26 insertions, 17 deletions
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index cf08f4ad68..74e1ab6508 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -276,23 +276,8 @@ EngineControl::EngineControl () ++row; #endif - find_jack_servers (server_strings); - - if (server_strings.empty()) { - fatal << _("No JACK server found anywhere on this system. Please install JACK and restart") << endmsg; - /*NOTREACHED*/ - } - - set_popdown_strings (serverpath_combo, server_strings); - serverpath_combo.set_active_text (server_strings.front()); - - if (server_strings.size() > 1) { - label = manage (new Label (_("Server:"))); - options_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - label->set_alignment (0.0, 0.5); - options_packer.attach (serverpath_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; - } + /* defer server stuff till later */ + server_row = row++; /* device settings */ @@ -354,6 +339,27 @@ EngineControl::~EngineControl () } void +EngineControl::discover_servers () +{ + find_jack_servers (server_strings); + + if (server_strings.empty()) { + fatal << _("No JACK server found anywhere on this system. Please install JACK and restart") << endmsg; + /*NOTREACHED*/ + } + + set_popdown_strings (serverpath_combo, server_strings); + serverpath_combo.set_active_text (server_strings.front()); + + if (server_strings.size() > 1) { + Gtk::Label* label = manage (new Label (_("Server:"))); + options_packer.attach (*label, 0, 1, server_row, server_row + 1, FILL|EXPAND, (AttachOptions) 0); + label->set_alignment (0.0, 0.5); + options_packer.attach (serverpath_combo, 1, 2, server_row, server_row + 1, FILL|EXPAND, (AttachOptions) 0); + } +} + +void EngineControl::build_command_line (vector<string>& cmd) { string str; diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 9e6eaf42d6..3a2138e4cc 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -22,6 +22,7 @@ class EngineControl : public Gtk::VBox { static bool engine_running (); int setup_engine (); + void discover_servers (); bool was_used() const { return _used; } XMLNode& get_state (); @@ -99,6 +100,7 @@ class EngineControl : public Gtk::VBox { uint32_t get_rate(); void audio_mode_changed (); std::vector<std::string> server_strings; + int server_row; void find_jack_servers (std::vector<std::string>&); std::string get_device_name (const std::string& driver, const std::string& human_readable_name); }; diff --git a/gtk2_ardour/new_session_dialog.cc b/gtk2_ardour/new_session_dialog.cc index c02d9b18f6..023b6063ba 100644 --- a/gtk2_ardour/new_session_dialog.cc +++ b/gtk2_ardour/new_session_dialog.cc @@ -493,6 +493,7 @@ NewSessionDialog::set_have_engine (bool yn) page_set = Pages (page_set & ~EnginePage); } else { if (!(page_set & EnginePage)) { + engine_control.discover_servers (); m_notebook->append_page (engine_control, _("Audio Setup")); m_notebook->show_all_children(); page_set = Pages (page_set | EnginePage); |