diff options
author | Alexey Yakovenko <wakeroid@gmail.com> | 2010-09-26 15:24:23 +0200 |
---|---|---|
committer | Alexey Yakovenko <wakeroid@gmail.com> | 2010-09-26 15:24:23 +0200 |
commit | f882500d2b4b228b6848124e05f89f2c1c62b090 (patch) | |
tree | bdc553523294ad0b0765f12e50a4299fd9a4aa68 /plugins/vfs_curl | |
parent | 74ba92ebc78e60ad140198db9694777a17d4fa16 (diff) |
refresh playlist (grouping) after metadata change in streaming media
Diffstat (limited to 'plugins/vfs_curl')
-rw-r--r-- | plugins/vfs_curl/vfs_curl.c | 7 |
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; } |