diff options
-rw-r--r-- | apps/plugin.c | 3 | ||||
-rw-r--r-- | apps/plugin.h | 5 | ||||
-rw-r--r-- | apps/plugins/pictureflow/pictureflow.c | 16 |
3 files changed, 20 insertions, 4 deletions
diff --git a/apps/plugin.c b/apps/plugin.c index 05a27ea591..dfdcb01b19 100644 --- a/apps/plugin.c +++ b/apps/plugin.c @@ -648,6 +648,9 @@ static const struct plugin_api rockbox_api = { #ifdef HAVE_TOUCHSCREEN action_get_touchscreen_press, #endif +#if defined(HAVE_TAGCACHE) && defined(HAVE_TC_RAMCACHE) + tagcache_fill_tags +#endif }; int plugin_load(const char* plugin, const void* parameter) diff --git a/apps/plugin.h b/apps/plugin.h index 8ec0f19572..56d3f42d1b 100644 --- a/apps/plugin.h +++ b/apps/plugin.h @@ -128,7 +128,7 @@ void* plugin_get_buffer(size_t *buffer_size); #define PLUGIN_MAGIC 0x526F634B /* RocK */ /* increase this every time the api struct changes */ -#define PLUGIN_API_VERSION 152 +#define PLUGIN_API_VERSION 153 /* update this to latest version if a change to the api struct breaks backwards compatibility (and please take the opportunity to sort in any @@ -810,6 +810,9 @@ struct plugin_api { #ifdef HAVE_TOUCHSCREEN int (*action_get_touchscreen_press)(short *x, short *y); #endif +#if defined(HAVE_TAGCACHE) && defined(HAVE_TC_RAMCACHE) + bool (*tagcache_fill_tags)(struct mp3entry *id3, const char *filename); +#endif }; /* plugin header */ diff --git a/apps/plugins/pictureflow/pictureflow.c b/apps/plugins/pictureflow/pictureflow.c index cd12152d43..2baea2a730 100644 --- a/apps/plugins/pictureflow/pictureflow.c +++ b/apps/plugins/pictureflow/pictureflow.c @@ -879,9 +879,19 @@ bool get_albumart_for_index_from_db(const int slide_index, char *buf, struct mp3entry id3; int fd; - fd = rb->open(tcs.result, O_RDONLY); - rb->get_metadata(&id3, fd, tcs.result); - rb->close(fd); +#ifdef HAVE_TC_RAMCACHE + if (rb->tagcache_fill_tags(&id3, tcs.result)) + { + rb->strncpy(id3.path, tcs.result, sizeof(id3.path)); + id3.path[sizeof(id3.path) - 1] = 0; + } + else +#endif + { + fd = rb->open(tcs.result, O_RDONLY); + rb->get_metadata(&id3, fd, tcs.result); + rb->close(fd); + } if ( search_albumart_files(&id3, "", buf, buflen) ) result = true; else |