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:
@@ -402,8 +402,29 @@ httpd_output_tag(void *data, const struct tag *tag)
|
|||||||
|
|
||||||
if (httpd->encoder->plugin->tag != NULL) {
|
if (httpd->encoder->plugin->tag != NULL) {
|
||||||
/* embed encoder tags */
|
/* 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);
|
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 {
|
} else {
|
||||||
/* use Icy-Metadata */
|
/* use Icy-Metadata */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user