aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--configure.ac2
-rw-r--r--doc/user.xml11
-rw-r--r--src/output/jack_output_plugin.c27
4 files changed, 36 insertions, 5 deletions
diff --git a/NEWS b/NEWS
index 004b0b2e5..88f7a8fa5 100644
--- a/NEWS
+++ b/NEWS
@@ -32,6 +32,7 @@ ver 0.16 (20??/??/??)
- pulse: announce "media.role=music"
- pulse: renamed context to "Music Player Daemon"
- pulse: connect to server on MPD startup, implement pause
+ - jack: require libjack 0.100
- jack: don't disconnect during pause
- jack: connect to server on MPD startup
- jack: added option "client_name"
diff --git a/configure.ac b/configure.ac
index 792fcd675..5f9b98111 100644
--- a/configure.ac
+++ b/configure.ac
@@ -700,7 +700,7 @@ AC_ARG_ENABLE(jack,
[enable jack support]),,
enable_jack=auto)
-MPD_AUTO_PKG(jack, JACK, [jack >= 0.4],
+MPD_AUTO_PKG(jack, JACK, [jack >= 0.100],
[JACK output plugin], [libjack not found])
if test x$enable_jack = xyes; then
AC_DEFINE([HAVE_JACK], 1, [Define to enable JACK support])
diff --git a/doc/user.xml b/doc/user.xml
index e60c8d282..494e8af75 100644
--- a/doc/user.xml
+++ b/doc/user.xml
@@ -747,6 +747,17 @@ cd mpd-version</programlisting>
</row>
<row>
<entry>
+ <varname>autostart</varname>
+ <parameter>yes|no</parameter>
+ </entry>
+ <entry>
+ If set to <parameter>yes</parameter>, then
+ <filename>libjack</filename> will automatically
+ launch the JACK daemon. Disabled by default.
+ </entry>
+ </row>
+ <row>
+ <entry>
<varname>ports</varname>
<parameter>A,B</parameter>
</entry>
diff --git a/src/output/jack_output_plugin.c b/src/output/jack_output_plugin.c
index 3d38a9d2d..51c148282 100644
--- a/src/output/jack_output_plugin.c
+++ b/src/output/jack_output_plugin.c
@@ -43,6 +43,11 @@ static const char *const port_names[2] = {
};
struct jack_data {
+ /**
+ * libjack options passed to jack_client_open().
+ */
+ jack_options_t options;
+
const char *name;
/* configuration */
@@ -169,13 +174,17 @@ mpd_jack_disconnect(struct jack_data *jd)
static bool
mpd_jack_connect(struct jack_data *jd, GError **error_r)
{
+ jack_status_t status;
+
assert(jd != NULL);
jd->shutdown = false;
- if ((jd->client = jack_client_new(jd->name)) == NULL) {
+ jd->client = jack_client_open(jd->name, jd->options, &status);
+ if (jd->client == NULL) {
g_set_error(error_r, jack_output_quark(), 0,
- "Failed to connect to JACK server");
+ "Failed to connect to JACK server, status=%d",
+ status);
return false;
}
@@ -212,8 +221,18 @@ mpd_jack_init(G_GNUC_UNUSED const struct audio_format *audio_format,
const char *value;
jd = g_new(struct jack_data, 1);
- jd->name = config_get_block_string(param, "client_name",
- "Music Player Daemon");
+ jd->options = JackNullOption;
+
+ jd->name = config_get_block_string(param, "client_name", NULL);
+ if (jd->name != NULL)
+ jd->options |= JackUseExactName;
+ else
+ /* if there's a no configured client name, we don't
+ care about the JackUseExactName option */
+ jd->name = "Music Player Daemon";
+
+ if (!config_get_block_bool(param, "autostart", false))
+ jd->options |= JackNoStartServer;
value = config_get_block_string(param, "ports", NULL);
if (value != NULL) {