Commit 6dcec366 authored by Max Kellermann's avatar Max Kellermann

Merge release 0.15.16 into v0.16.x

Conflicts: NEWS configure.ac src/output/jack_plugin.c src/update.c
parents e2aea6bc 4d4b7e3d
...@@ -141,9 +141,13 @@ ver 0.16 (2010/12/11) ...@@ -141,9 +141,13 @@ ver 0.16 (2010/12/11)
* make single mode 'sticky' * 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: * encoders:
- lame: explicitly configure the output sample rate - lame: explicitly configure the output sample rate
* update: log all file permission problems
ver 0.15.15 (2010/11/08) ver 0.15.15 (2010/11/08)
......
...@@ -26,6 +26,9 @@ ...@@ -26,6 +26,9 @@
#undef G_LOG_DOMAIN #undef G_LOG_DOMAIN
#define G_LOG_DOMAIN "ao" #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; static unsigned ao_output_ref;
struct ao_data { struct ao_data {
...@@ -167,7 +170,7 @@ static bool ...@@ -167,7 +170,7 @@ static bool
ao_output_open(void *data, struct audio_format *audio_format, ao_output_open(void *data, struct audio_format *audio_format,
GError **error) GError **error)
{ {
ao_sample_format format; ao_sample_format format = OUR_AO_FORMAT_INITIALIZER;
struct ao_data *ad = (struct ao_data *)data; struct ao_data *ad = (struct ao_data *)data;
switch (audio_format->format) { switch (audio_format->format) {
......
...@@ -40,7 +40,7 @@ enum { ...@@ -40,7 +40,7 @@ enum {
MAX_PORTS = 16, 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 { struct jack_data {
/** /**
...@@ -103,9 +103,9 @@ mpd_jack_available(const struct jack_data *jd) ...@@ -103,9 +103,9 @@ mpd_jack_available(const struct jack_data *jd)
min = current; min = current;
} }
assert(min % sample_size == 0); assert(min % jack_sample_size == 0);
return min / sample_size; return min / jack_sample_size;
} }
static int static int
...@@ -123,7 +123,7 @@ mpd_jack_process(jack_nframes_t nframes, void *arg) ...@@ -123,7 +123,7 @@ mpd_jack_process(jack_nframes_t nframes, void *arg)
const jack_nframes_t available = mpd_jack_available(jd); const jack_nframes_t available = mpd_jack_available(jd);
for (unsigned i = 0; i < jd->audio_format.channels; ++i) for (unsigned i = 0; i < jd->audio_format.channels; ++i)
jack_ringbuffer_read_advance(jd->ringbuffer[i], jack_ringbuffer_read_advance(jd->ringbuffer[i],
available * sample_size); available * jack_sample_size);
/* generate silence while MPD is paused */ /* generate silence while MPD is paused */
...@@ -144,7 +144,7 @@ mpd_jack_process(jack_nframes_t nframes, void *arg) ...@@ -144,7 +144,7 @@ mpd_jack_process(jack_nframes_t nframes, void *arg)
for (unsigned i = 0; i < jd->audio_format.channels; ++i) { for (unsigned i = 0; i < jd->audio_format.channels; ++i) {
out = jack_port_get_buffer(jd->ports[i], nframes); out = jack_port_get_buffer(jd->ports[i], nframes);
jack_ringbuffer_read(jd->ringbuffer[i], 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) for (jack_nframes_t f = available; f < nframes; ++f)
/* ringbuffer underrun, fill with silence */ /* ringbuffer underrun, fill with silence */
...@@ -675,7 +675,7 @@ mpd_jack_play(void *data, const void *chunk, size_t size, GError **error_r) ...@@ -675,7 +675,7 @@ mpd_jack_play(void *data, const void *chunk, size_t size, GError **error_r)
space = space1; space = space1;
} }
if (space >= frame_size) if (space >= jack_sample_size)
break; break;
/* XXX do something more intelligent to /* XXX do something more intelligent to
...@@ -683,7 +683,7 @@ mpd_jack_play(void *data, const void *chunk, size_t size, GError **error_r) ...@@ -683,7 +683,7 @@ mpd_jack_play(void *data, const void *chunk, size_t size, GError **error_r)
g_usleep(1000); g_usleep(1000);
} }
space /= sample_size; space /= jack_sample_size;
if (space < size) if (space < size)
size = space; size = space;
......
...@@ -20,9 +20,9 @@ ...@@ -20,9 +20,9 @@
#ifndef MPD_PIPE_H #ifndef MPD_PIPE_H
#define MPD_PIPE_H #define MPD_PIPE_H
#ifndef NDEBUG
#include <stdbool.h> #include <stdbool.h>
#ifndef NDEBUG
struct audio_format; struct audio_format;
#endif #endif
......
...@@ -300,6 +300,9 @@ stat_directory(const struct directory *directory, struct stat *st) ...@@ -300,6 +300,9 @@ stat_directory(const struct directory *directory, struct stat *st)
if (path_fs == NULL) if (path_fs == NULL)
return -1; return -1;
ret = stat(path_fs, st); ret = stat(path_fs, st);
if (ret < 0)
g_warning("Failed to stat %s: %s", path_fs, g_strerror(errno));
g_free(path_fs); g_free(path_fs);
return ret; return ret;
} }
...@@ -316,6 +319,9 @@ stat_directory_child(const struct directory *parent, const char *name, ...@@ -316,6 +319,9 @@ stat_directory_child(const struct directory *parent, const char *name,
return -1; return -1;
ret = stat(path_fs, st); ret = stat(path_fs, st);
if (ret < 0)
g_warning("Failed to stat %s: %s", path_fs, g_strerror(errno));
g_free(path_fs); g_free(path_fs);
return ret; return ret;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment