summaryrefslogtreecommitdiff
path: root/plugins/vfs_curl
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-09-26 15:24:23 +0200
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-09-26 15:24:23 +0200
commitf882500d2b4b228b6848124e05f89f2c1c62b090 (patch)
treebdc553523294ad0b0765f12e50a4299fd9a4aa68 /plugins/vfs_curl
parent74ba92ebc78e60ad140198db9694777a17d4fa16 (diff)
refresh playlist (grouping) after metadata change in streaming media
Diffstat (limited to 'plugins/vfs_curl')
-rw-r--r--plugins/vfs_curl/vfs_curl.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/plugins/vfs_curl/vfs_curl.c b/plugins/vfs_curl/vfs_curl.c
index 3f612784..e73741a2 100644
--- a/plugins/vfs_curl/vfs_curl.c
+++ b/plugins/vfs_curl/vfs_curl.c
@@ -182,6 +182,7 @@ http_parse_shoutcast_meta (HTTP_FILE *fp, const char *meta, int size) {
else {
vfs_curl_set_meta (fp->track, "title", title);
}
+ deadbeef->plug_trigger_event_playlistchanged ();
}
return 0;
}
@@ -389,6 +390,7 @@ http_content_header_handler (void *ptr, size_t size, size_t nmemb, void *stream)
const uint8_t *end = p + size*nmemb;
uint8_t key[256];
uint8_t value[256];
+ int refresh_playlist = 0;
while (p < end) {
if (p <= end - 4) {
if (!memcmp (p, "\r\n\r\n", 4)) {
@@ -414,11 +416,13 @@ http_content_header_handler (void *ptr, size_t size, size_t nmemb, void *stream)
else if (!strcasecmp (key, "icy-name")) {
if (fp->track) {
vfs_curl_set_meta (fp->track, "album", value);
+ refresh_playlist = 1;
}
}
else if (!strcasecmp (key, "icy-genre")) {
if (fp->track) {
vfs_curl_set_meta (fp->track, "genre", value);
+ refresh_playlist = 1;
}
}
else if (!strcasecmp (key, "icy-metaint")) {
@@ -427,6 +431,9 @@ http_content_header_handler (void *ptr, size_t size, size_t nmemb, void *stream)
fp->wait_meta = fp->icy_metaint;
}
}
+ if (refresh_playlist) {
+ deadbeef->plug_trigger_event_playlistchanged ();
+ }
if (!fp->icyheader) {
fp->gotsomeheader = 1;
}