diff options
author | Max Kellermann <max@duempel.org> | 2012-04-04 21:38:29 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2012-04-04 21:38:29 +0200 |
commit | e7a18625177e2831d96baf2f7fc16f23bc99975d (patch) | |
tree | e990891fe42f97ccd25f6698f72e11077d817e0a | |
parent | d8e423df1a3c4ea7db547089c8cf0647268cfd44 (diff) | |
download | mpd-e7a18625177e2831d96baf2f7fc16f23bc99975d.tar.gz mpd-e7a18625177e2831d96baf2f7fc16f23bc99975d.tar.xz mpd-e7a18625177e2831d96baf2f7fc16f23bc99975d.zip |
output/jack: workaround for libjack1 crash bug
Diffstat (limited to '')
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | src/output/jack_output_plugin.c | 13 |
2 files changed, 14 insertions, 0 deletions
@@ -4,6 +4,7 @@ ver 0.16.8 (2012/??/??) - vorbis (and others): fix seeking at startup - ffmpeg: read the "year" tag * output: + - jack: workaround for libjack1 crash bug - osx: fix stuttering due to buffering bug * fix endless loop in text file reader * update: skip symlinks in path that is to be updated diff --git a/src/output/jack_output_plugin.c b/src/output/jack_output_plugin.c index 2767d4eb8..bc13c2f85 100644 --- a/src/output/jack_output_plugin.c +++ b/src/output/jack_output_plugin.c @@ -143,6 +143,13 @@ mpd_jack_process(jack_nframes_t nframes, void *arg) for (unsigned i = 0; i < jd->audio_format.channels; ++i) { out = jack_port_get_buffer(jd->ports[i], nframes); + if (out == NULL) + /* workaround for libjack1 bug: if the server + connection fails, the process callback is + invoked anyway, but unable to get a + buffer */ + continue; + jack_ringbuffer_read(jd->ringbuffer[i], (char *)out, available * jack_sample_size); @@ -156,6 +163,12 @@ mpd_jack_process(jack_nframes_t nframes, void *arg) for (unsigned i = jd->audio_format.channels; i < jd->num_source_ports; ++i) { out = jack_port_get_buffer(jd->ports[i], nframes); + if (out == NULL) + /* workaround for libjack1 bug: if the server + connection fails, the process callback is + invoked anyway, but unable to get a + buffer */ + continue; for (jack_nframes_t f = 0; f < nframes; ++f) out[f] = 0.0; |