From: E.Smith <31170571+azlm8t@users.noreply.github.com> Date: Wed, 3 Oct 2018 23:54:45 +0000 (+0100) Subject: dvr: Remove fanart entries from the list until we process one. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ce0fd19fb990f391a5d5da60b802cbdc42dd2e06;p=thirdparty%2Ftvheadend.git dvr: Remove fanart entries from the list until we process one. We might have entries on our list of pending fanart fetches that no longer need fetching (user changed config, etc.) So keep removing entries from the list until we find ones that need a fanart fetch. --- diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index 02a9174ed..bffc2cb66 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -815,21 +815,33 @@ dvr_entry_fanart_add_to_prefetch(const dvr_entry_t *de) static void dvr_entry_fanart_prefetch_cb(void *aux) { + char *id; + dvr_entry_t *de; + lock_assert(&global_lock); /* Only do one entry, even if list has many since we don't * want to overload fanart providers. + * + * However we may have items on the list that don't need + * fanart lookup, so skip over any of this. */ - char *id = string_list_remove_first(dvr_fanart_to_prefetch); - if (id) { - dvr_entry_t *de = dvr_entry_find_by_uuid(id); - if (de && de->de_config && de->de_config->dvr_fetch_artwork) { + int done_one = 0; + while (!done_one) { + id = string_list_remove_first(dvr_fanart_to_prefetch); + /* No entries left on list? */ + if (!id) + break; + + de = dvr_entry_find_by_uuid(id); + if (dvr_entry_allow_fanart_lookup(de)) { tvhinfo(LS_DVR, "Prefetching artwork for %s \"%s\"", id, lang_str_get(de->de_title, NULL)); dvr_spawn_fetch_artwork(de); + done_one = 1; } free(id); - } + } /* !done_one */ // Re-arm timer with a slight random factor to avoid queries at same // time every hour. diff --git a/src/dvr/dvr_rec.c b/src/dvr/dvr_rec.c index 54c861a43..d694f368e 100644 --- a/src/dvr/dvr_rec.c +++ b/src/dvr/dvr_rec.c @@ -66,7 +66,7 @@ dvr_spawn_fetch_artwork(dvr_entry_t *de) char ubuf[UUID_HEX_SIZE]; if (!dvr_entry_allow_fanart_lookup(de)) - return; + return; snprintf(buf, sizeof buf, "tvhmeta --uuid %s %s", idnode_uuid_as_str(&de->de_id, ubuf),