diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-25 22:56:28 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-25 22:56:28 -0400 |
commit | c736d88a5f71a1e5d8c975c7222b93cdc1d4204b (patch) | |
tree | 9cfe41c0250cfc0023c8929a3da8395e06d189bf | |
parent | d6274d5c3e588ee0b66bf95551567a77b38b3619 (diff) |
don't ping JACK server 4 times to see if it is already up when ardour starts
-rw-r--r-- | libs/backends/jack/jack_api.cc | 2 | ||||
-rw-r--r-- | libs/backends/jack/jack_audiobackend.cc | 5 | ||||
-rw-r--r-- | libs/backends/jack/jack_connection.cc | 36 | ||||
-rw-r--r-- | libs/backends/jack/jack_connection.h | 6 |
4 files changed, 18 insertions, 31 deletions
diff --git a/libs/backends/jack/jack_api.cc b/libs/backends/jack/jack_api.cc index 836acfda11..c8859a1fc9 100644 --- a/libs/backends/jack/jack_api.cc +++ b/libs/backends/jack/jack_api.cc @@ -63,7 +63,7 @@ deinstantiate () static bool already_configured () { - return JackConnection::server_running (); + return !JackConnection::in_control (); } static ARDOUR::AudioBackendInfo _descriptor = { diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index d4e2f310d3..c6a523f4d2 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -513,7 +513,10 @@ JACKAudioBackend::start () { if (!available()) { - if (!_jack_connection->server_running()) { + if (_jack_connection->in_control()) { + /* we will be starting JACK, so set up the + command that JACK will use when it (auto-)starts + */ setup_jack_startup_command (); } diff --git a/libs/backends/jack/jack_connection.cc b/libs/backends/jack/jack_connection.cc index d5d25c747f..b3d7fcecc4 100644 --- a/libs/backends/jack/jack_connection.cc +++ b/libs/backends/jack/jack_connection.cc @@ -36,6 +36,8 @@ using std::vector; using std::cerr; using std::endl; +bool JackConnection::_in_control = false; + static void jack_halted_callback (void* arg) { JackConnection* jc = static_cast<JackConnection*> (arg); @@ -54,17 +56,9 @@ JackConnection::JackConnection (const std::string& arg1, const std::string& arg2 , _client_name (arg1) , session_uuid (arg2) { - _in_control = !server_running(); -} - -JackConnection::~JackConnection () -{ - close (); -} + /* See if the server is already up + */ -bool -JackConnection::server_running () -{ EnvironmentalProtectionAgency* global_epa = EnvironmentalProtectionAgency::get_global_epa (); boost::scoped_ptr<EnvironmentalProtectionAgency> current_epa; @@ -83,10 +77,15 @@ JackConnection::server_running () if (status == 0) { jack_client_close (c); - return true; + _in_control = false; + } else { + _in_control = true; } +} - return false; +JackConnection::~JackConnection () +{ + close (); } int @@ -106,19 +105,6 @@ JackConnection::open () global_epa->restore (); } - /* check to see if the server is already running so that we know if we - * are starting it. - */ - - jack_client_t* c = jack_client_open ("ardourprobe", JackNoStartServer, &status); - - if (status == 0) { - _in_control = false; - jack_client_close (c); - } else { - _in_control = true; - } - /* ensure that PATH or equivalent includes likely locations of the JACK * server, in case the user's default does not. */ diff --git a/libs/backends/jack/jack_connection.h b/libs/backends/jack/jack_connection.h index 229d9697d9..8d15be6e3a 100644 --- a/libs/backends/jack/jack_connection.h +++ b/libs/backends/jack/jack_connection.h @@ -27,15 +27,13 @@ class JackConnection { void halted_callback (); void halted_info_callback (jack_status_t, const char*); - bool in_control() const { return _in_control; } + static bool in_control() { return _in_control; } - static bool server_running(); - private: jack_client_t* volatile _jack; std::string _client_name; std::string session_uuid; - bool _in_control; + static bool _in_control; }; } // namespace |