diff --git a/apps/plugins/properties.c b/apps/plugins/properties.c index 53af4c5bab..ef9dc4c7f7 100644 --- a/apps/plugins/properties.c +++ b/apps/plugins/properties.c @@ -48,6 +48,7 @@ static int props_type = PROPS_FILE; static struct mp3entry id3; #ifdef HAVE_TAGCACHE static int mul_id3_count; +static int skipped_count; #endif static char str_filename[MAX_PATH]; @@ -374,11 +375,15 @@ static bool determine_file_or_dir(void) #ifdef HAVE_TAGCACHE bool mul_id3_add(const char *file_name) { - if (rb->mp3info(&id3, file_name)) + if (!file_name) + skipped_count++; + else if (rb->mp3info(&id3, file_name)) return false; - - collect_id3(&id3, mul_id3_count == 0); - mul_id3_count++; + else + { + collect_id3(&id3, mul_id3_count == 0); + mul_id3_count++; + } return true; } @@ -406,12 +411,15 @@ enum plugin_status plugin_start(const void* parameter) if (!rb->strcmp(file, MAKE_ACT_STR(ACTIVITY_DATABASEBROWSER))) /* db table selected */ { props_type = PROPS_MUL_ID3; - mul_id3_count = 0; + mul_id3_count = skipped_count = 0; if (!rb->tagtree_subentries_do_action(&mul_id3_add) || mul_id3_count == 0) return PLUGIN_ERROR; else if (mul_id3_count > 1) /* otherwise, the retrieved id3 can be used as-is */ finalize_id3(&id3); + + if (skipped_count > 0) + rb->splashf(HZ*2, "Skipped %d", skipped_count); } else #endif diff --git a/apps/tagtree.c b/apps/tagtree.c index 542b0bb120..a85f848c13 100644 --- a/apps/tagtree.c +++ b/apps/tagtree.c @@ -2258,7 +2258,8 @@ static bool tagtree_insert_selection(int position, bool queue, /* Execute action_cb for all subentries of the current table's * selected item, handing over each entry's filename in the - * callback function parameter. + * callback function parameter. Parameter will be NULL for + * entries whose filename couldn't be retrieved. */ bool tagtree_subentries_do_action(bool (*action_cb)(const char *file_name)) { @@ -2289,9 +2290,8 @@ bool tagtree_subentries_do_action(bool (*action_cb)(const char *file_name)) last_tick = current_tick; } - if (!tagcache_retrieve(&tcs, tagtree_get_entry(tc, i)->extraseek, - tcs.type, buf, sizeof buf) - || !action_cb(buf)) + if (!action_cb(tagcache_retrieve(&tcs, tagtree_get_entry(tc, i)->extraseek, + tcs.type, buf, sizeof buf) ? buf : NULL)) { ret = false; break;