summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/plugin.c3
-rw-r--r--apps/plugin.h5
-rw-r--r--apps/plugins/pictureflow/pictureflow.c16
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