aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--NEWS6
-rw-r--r--src/output/ao_plugin.c5
-rw-r--r--src/output/jack_output_plugin.c14
-rw-r--r--src/pipe.h2
-rw-r--r--src/update_walk.c6
5 files changed, 23 insertions, 10 deletions
diff --git a/NEWS b/NEWS
index f51f6122a..5f7ef436c 100644
--- a/NEWS
+++ b/NEWS
@@ -141,9 +141,13 @@ ver 0.16 (2010/12/11)
* make single mode 'sticky'
-ver 0.15.16 (2010/??/??)
+ver 0.15.16 (2011/03/13)
+* output:
+ - ao: initialize the ao_sample_format struct
+ - jack: fix crash with mono playback
* encoders:
- lame: explicitly configure the output sample rate
+* update: log all file permission problems
ver 0.15.15 (2010/11/08)
diff --git a/src/output/ao_plugin.c b/src/output/ao_plugin.c
index d5c95018c..6fedbc6e2 100644
--- a/src/output/ao_plugin.c
+++ b/src/output/ao_plugin.c
@@ -26,6 +26,9 @@
#undef G_LOG_DOMAIN
#define G_LOG_DOMAIN "ao"
+/* An ao_sample_format, with all fields set to zero: */
+static const ao_sample_format OUR_AO_FORMAT_INITIALIZER;
+
static unsigned ao_output_ref;
struct ao_data {
@@ -167,7 +170,7 @@ static bool
ao_output_open(void *data, struct audio_format *audio_format,
GError **error)
{
- ao_sample_format format;
+ ao_sample_format format = OUR_AO_FORMAT_INITIALIZER;
struct ao_data *ad = (struct ao_data *)data;
switch (audio_format->format) {
diff --git a/src/output/jack_output_plugin.c b/src/output/jack_output_plugin.c
index 110ee5f26..2767d4eb8 100644
--- a/src/output/jack_output_plugin.c
+++ b/src/output/jack_output_plugin.c
@@ -40,7 +40,7 @@ enum {
MAX_PORTS = 16,
};
-static const size_t sample_size = sizeof(jack_default_audio_sample_t);
+static const size_t jack_sample_size = sizeof(jack_default_audio_sample_t);
struct jack_data {
/**
@@ -103,9 +103,9 @@ mpd_jack_available(const struct jack_data *jd)
min = current;
}
- assert(min % sample_size == 0);
+ assert(min % jack_sample_size == 0);
- return min / sample_size;
+ return min / jack_sample_size;
}
static int
@@ -123,7 +123,7 @@ mpd_jack_process(jack_nframes_t nframes, void *arg)
const jack_nframes_t available = mpd_jack_available(jd);
for (unsigned i = 0; i < jd->audio_format.channels; ++i)
jack_ringbuffer_read_advance(jd->ringbuffer[i],
- available * sample_size);
+ available * jack_sample_size);
/* generate silence while MPD is paused */
@@ -144,7 +144,7 @@ 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);
jack_ringbuffer_read(jd->ringbuffer[i],
- (char *)out, available * sample_size);
+ (char *)out, available * jack_sample_size);
for (jack_nframes_t f = available; f < nframes; ++f)
/* ringbuffer underrun, fill with silence */
@@ -675,7 +675,7 @@ mpd_jack_play(void *data, const void *chunk, size_t size, GError **error_r)
space = space1;
}
- if (space >= frame_size)
+ if (space >= jack_sample_size)
break;
/* XXX do something more intelligent to
@@ -683,7 +683,7 @@ mpd_jack_play(void *data, const void *chunk, size_t size, GError **error_r)
g_usleep(1000);
}
- space /= sample_size;
+ space /= jack_sample_size;
if (space < size)
size = space;
diff --git a/src/pipe.h b/src/pipe.h
index 7eabb6e54..f9540a30e 100644
--- a/src/pipe.h
+++ b/src/pipe.h
@@ -20,9 +20,9 @@
#ifndef MPD_PIPE_H
#define MPD_PIPE_H
-#ifndef NDEBUG
#include <stdbool.h>
+#ifndef NDEBUG
struct audio_format;
#endif
diff --git a/src/update_walk.c b/src/update_walk.c
index 95d5854a8..a1796edcb 100644
--- a/src/update_walk.c
+++ b/src/update_walk.c
@@ -300,6 +300,9 @@ stat_directory(const struct directory *directory, struct stat *st)
if (path_fs == NULL)
return -1;
ret = stat(path_fs, st);
+ if (ret < 0)
+ g_warning("Failed to stat %s: %s", path_fs, g_strerror(errno));
+
g_free(path_fs);
return ret;
}
@@ -316,6 +319,9 @@ stat_directory_child(const struct directory *parent, const char *name,
return -1;
ret = stat(path_fs, st);
+ if (ret < 0)
+ g_warning("Failed to stat %s: %s", path_fs, g_strerror(errno));
+
g_free(path_fs);
return ret;
}