static boost::shared_ptr<JACKAudioBackend> backend;
static boost::shared_ptr<JackConnection> jack_connection;
+static boost::shared_ptr<AudioBackend> backend_factory (AudioEngine& ae);
+static int instantiate (const std::string& arg1, const std::string& arg2);
+static int deinstantiate ();
+static bool already_configured ();
+static bool available ();
+
+static ARDOUR::AudioBackendInfo _descriptor = {
+ "JACK",
+ instantiate,
+ deinstantiate,
+ backend_factory,
+ already_configured,
+ available
+};
+
static boost::shared_ptr<AudioBackend>
backend_factory (AudioEngine& ae)
{
}
if (!backend) {
- backend.reset (new JACKAudioBackend (ae, jack_connection));
+ backend.reset (new JACKAudioBackend (ae, _descriptor, jack_connection));
}
return backend;
return 0;
}
-static int
+static int
deinstantiate ()
{
backend.reset ();
static bool
already_configured ()
{
- return JackConnection::server_running ();
+ return !JackConnection::in_control ();
}
-extern "C" {
-
-
- /* functions looked up using dlopen-and-cousins, and so naming scope
- * must be non-mangled.
- */
-
- ARDOUR::AudioBackendInfo descriptor = {
- "JACK",
- instantiate,
- deinstantiate,
- backend_factory,
- already_configured,
- };
+static bool
+available ()
+{
+ return have_libjack() ? false : true;
}
+extern "C" ARDOURBACKEND_API ARDOUR::AudioBackendInfo* descriptor() { return &_descriptor; }
+