httpd_output: save the page generated by encoder_tag()

Flush the encoder before calling encoder_tag().  The first page
generated by the encoder after sending the tag will be the new
"header" page, which is sent to all HTTP clients when they connect.
This is a little bit specific to the vorbis encoder, but there are no
other encoders which support tags (yet).
This commit is contained in:
Max Kellermann 2009-05-05 22:51:17 +02:00
parent e55e560d4e
commit 4818d38677
1 changed files with 21 additions and 0 deletions

View File

@ -402,8 +402,29 @@ httpd_output_tag(void *data, const struct tag *tag)
if (httpd->encoder->plugin->tag != NULL) {
/* embed encoder tags */
struct page *page;
/* flush the current stream, and end it */
encoder_flush(httpd->encoder, NULL);
httpd_output_encoder_to_clients(httpd);
/* send the tag to the encoder - which starts a new
stream now */
encoder_tag(httpd->encoder, tag, NULL);
/* the first page generated by the encoder will now be
used as the new "header" page, which is sent to all
new clients */
page = httpd_output_read_page(httpd);
if (page != NULL) {
if (httpd->header != NULL)
page_unref(httpd->header);
httpd->header = page;
httpd_output_broadcast_page(httpd, page);
}
} else {
/* use Icy-Metadata */