Merge branch 'v0.16.x'

Conflicts:
	src/player_thread.c
	src/playlist_control.c
This commit is contained in:
Max Kellermann
2011-07-20 21:46:05 +02:00
13 changed files with 101 additions and 38 deletions

View File

@@ -508,6 +508,14 @@ configure_hw:
g_debug("buffer_size=%u period_size=%u",
(unsigned)alsa_buffer_size, (unsigned)alsa_period_size);
if (alsa_period_size == 0)
/* this works around a SIGFPE bug that occurred when
an ALSA driver indicated period_size==0; this
caused a division by zero in alsa_play(). By using
the fallback "1", we make sure that this won't
happen again. */
alsa_period_size = 1;
ad->period_frames = alsa_period_size;
ad->period_position = 0;

View File

@@ -493,7 +493,8 @@ httpd_output_pause(void *data)
if (has_clients) {
static const char silence[1020];
return httpd_output_play(data, silence, sizeof(silence), NULL);
return httpd_output_play(data, silence, sizeof(silence),
NULL) > 0;
} else {
g_usleep(100000);
return true;
@@ -522,7 +523,7 @@ httpd_output_tag(void *data, const struct tag *tag)
/* flush the current stream, and end it */
encoder_flush(httpd->encoder, NULL);
encoder_pre_tag(httpd->encoder, NULL);
httpd_output_encoder_to_clients(httpd);
/* send the tag to the encoder - which starts a new

View File

@@ -518,7 +518,7 @@ static void my_shout_set_tag(void *data,
if (sd->encoder->plugin->tag != NULL) {
/* encoder plugin supports stream tags */
ret = encoder_flush(sd->encoder, &error);
ret = encoder_pre_tag(sd->encoder, &error);
if (!ret) {
g_warning("%s", error->message);
g_error_free(error);