summaryrefslogtreecommitdiff
path: root/libs/backends
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-09-25 22:56:28 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-09-25 22:56:28 -0400
commitc736d88a5f71a1e5d8c975c7222b93cdc1d4204b (patch)
tree9cfe41c0250cfc0023c8929a3da8395e06d189bf /libs/backends
parentd6274d5c3e588ee0b66bf95551567a77b38b3619 (diff)
don't ping JACK server 4 times to see if it is already up when ardour starts
Diffstat (limited to 'libs/backends')
-rw-r--r--libs/backends/jack/jack_api.cc2
-rw-r--r--libs/backends/jack/jack_audiobackend.cc5
-rw-r--r--libs/backends/jack/jack_connection.cc36
-rw-r--r--libs/backends/jack/jack_connection.h6
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