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:
parent
e55e560d4e
commit
4818d38677
|
@ -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 */
|
||||
|
||||
|
|
Loading…
Reference in New Issue