From ca1b92089623a4e377f2fae67a790bd099a8d59d Mon Sep 17 00:00:00 2001 From: Robert Kukla Date: Sun, 4 Nov 2007 21:11:40 +0000 Subject: [PATCH] Fix for FS#8082: runtime data fields are filled like any other fields in the mp3entry struct during the call to get_metadata(); HWCODEC still uses the old callback mechanism git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15463 a1c6a512-1295-4272-9138-f99709370657 --- apps/metadata.c | 7 +++++++ apps/tagtree.c | 6 +++--- apps/tagtree.h | 1 + 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/metadata.c b/apps/metadata.c index 66719754ad..97926fe652 100644 --- a/apps/metadata.c +++ b/apps/metadata.c @@ -26,6 +26,9 @@ #include "playback.h" #include "debug.h" #include "logf.h" +#ifdef HAVE_TAGCACHE +#include "tagtree.h" +#endif #include "cuesheet.h" #if CONFIG_CODEC == SWCODEC @@ -319,6 +322,10 @@ bool get_metadata(struct mp3entry* id3, int fd, const char* trackname) lseek(fd, 0, SEEK_SET); strncpy(id3->path, trackname, sizeof(id3->path)); +#ifdef HAVE_TAGCACHE + tagtree_buffer_event(id3); +#endif + return true; } diff --git a/apps/tagtree.c b/apps/tagtree.c index 60bdfb2c0e..725e90324a 100644 --- a/apps/tagtree.c +++ b/apps/tagtree.c @@ -633,10 +633,8 @@ static int compare(const void *p1, const void *p2) return strncasecmp(e1->name, e2->name, MAX_PATH); } -static void tagtree_buffer_event(struct mp3entry *id3) +void tagtree_buffer_event(struct mp3entry *id3) { - (void)id3; - /* Do not gather data unless proper setting has been enabled. */ if (!global_settings.runtimedb) return; @@ -923,7 +921,9 @@ void tagtree_init(void) root_menu = 0; uniqbuf = buffer_alloc(UNIQBUF_SIZE); +#if CONFIG_CODEC != SWCODEC audio_set_track_buffer_event(tagtree_buffer_event); +#endif audio_set_track_unbuffer_event(tagtree_unbuffer_event); } diff --git a/apps/tagtree.h b/apps/tagtree.h index e915dcec05..76060cbe40 100644 --- a/apps/tagtree.h +++ b/apps/tagtree.h @@ -48,6 +48,7 @@ char *tagtree_get_title(struct tree_context* c); int tagtree_get_attr(struct tree_context* c); int tagtree_get_icon(struct tree_context* c); int tagtree_get_filename(struct tree_context* c, char *buf, int buflen); +void tagtree_buffer_event(struct mp3entry *id3); #endif #endif