summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-05-18 13:44:37 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-05-18 13:44:37 +0000
commitc04d9d1975402c514d2feb44d997f0941d1f34c3 (patch)
tree5d3f31154f0e7703db0e5b11415376db53a5b40b /gtk2_ardour
parent06df411708c58987802ef10b8c3e2d50aad8e0e4 (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.cc40
-rw-r--r--gtk2_ardour/engine_dialog.h2
-rw-r--r--gtk2_ardour/new_session_dialog.cc1
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);