From c736d88a5f71a1e5d8c975c7222b93cdc1d4204b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 25 Sep 2013 22:56:28 -0400 Subject: [PATCH] don't ping JACK server 4 times to see if it is already up when ardour starts --- libs/backends/jack/jack_api.cc | 2 +- libs/backends/jack/jack_audiobackend.cc | 5 +++- libs/backends/jack/jack_connection.cc | 36 ++++++++----------------- 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 (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 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 -- 2.30.2