Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Drop thumb type from (most) movies, shows, seasons + sets + fixes #1694

Merged
15 commits merged into from Oct 31, 2012
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 2 additions & 6 deletions language/English/strings.po
Expand Up @@ -9156,9 +9156,7 @@ msgctxt "#20434"
msgid "Sets" msgid "Sets"
msgstr "" msgstr ""


msgctxt "#20435" #empty string with id 20435
msgid "Set movieset thumb"
msgstr ""


msgctxt "#20436" msgctxt "#20436"
msgid "Export actor thumbs?" msgid "Export actor thumbs?"
Expand Down Expand Up @@ -9240,9 +9238,7 @@ msgctxt "#20455"
msgid "Listeners" msgid "Listeners"
msgstr "" msgstr ""


msgctxt "#20456" #empty string with id 20456
msgid "Set movieset fanart"
msgstr ""


msgctxt "#20457" msgctxt "#20457"
msgid "Movie set" msgid "Movie set"
Expand Down
3 changes: 3 additions & 0 deletions xbmc/DatabaseManager.cpp
Expand Up @@ -54,6 +54,9 @@ void CDatabaseManager::Initialize(bool addonsOnly)
if (addonsOnly) if (addonsOnly)
return; return;
CLog::Log(LOGDEBUG, "%s, updating databases...", __FUNCTION__); CLog::Log(LOGDEBUG, "%s, updating databases...", __FUNCTION__);

// NOTE: Order here is important. In particular, CTextureDatabase has to be updated
// before CVideoDatabase.
{ CViewDatabase db; UpdateDatabase(db); } { CViewDatabase db; UpdateDatabase(db); }
{ CTextureDatabase db; UpdateDatabase(db); } { CTextureDatabase db; UpdateDatabase(db); }
{ CMusicDatabase db; UpdateDatabase(db, &g_advancedSettings.m_databaseMusic); } { CMusicDatabase db; UpdateDatabase(db, &g_advancedSettings.m_databaseMusic); }
Expand Down
4 changes: 2 additions & 2 deletions xbmc/GUIInfoManager.cpp
Expand Up @@ -3136,13 +3136,13 @@ CStdString CGUIInfoManager::GetImage(int info, int contextWindow, CStdString *fa
{ {
CGUIWindow *window = GetWindowWithCondition(contextWindow, WINDOW_CONDITION_IS_MEDIA_WINDOW); CGUIWindow *window = GetWindowWithCondition(contextWindow, WINDOW_CONDITION_IS_MEDIA_WINDOW);
if (window) if (window)
return ((CGUIMediaWindow *)window)->CurrentDirectory().GetArt("tvshowthumb"); return ((CGUIMediaWindow *)window)->CurrentDirectory().GetArt("tvshow.thumb");
} }
else if (info == CONTAINER_SEASONTHUMB) else if (info == CONTAINER_SEASONTHUMB)
{ {
CGUIWindow *window = GetWindowWithCondition(contextWindow, WINDOW_CONDITION_IS_MEDIA_WINDOW); CGUIWindow *window = GetWindowWithCondition(contextWindow, WINDOW_CONDITION_IS_MEDIA_WINDOW);
if (window) if (window)
return ((CGUIMediaWindow *)window)->CurrentDirectory().GetArt("seasonthumb"); return ((CGUIMediaWindow *)window)->CurrentDirectory().GetArt("season.thumb");
} }
else if (info == LISTITEM_THUMB || info == LISTITEM_ICON || info == LISTITEM_ACTUAL_ICON || else if (info == LISTITEM_THUMB || info == LISTITEM_ICON || info == LISTITEM_ACTUAL_ICON ||
info == LISTITEM_OVERLAY || info == LISTITEM_RATING || info == LISTITEM_STAR_RATING) info == LISTITEM_OVERLAY || info == LISTITEM_RATING || info == LISTITEM_STAR_RATING)
Expand Down
49 changes: 30 additions & 19 deletions xbmc/TextureCache.cpp
Expand Up @@ -72,21 +72,19 @@ bool CTextureCache::IsCachedImage(const CStdString &url) const


bool CTextureCache::HasCachedImage(const CStdString &url) bool CTextureCache::HasCachedImage(const CStdString &url)
{ {
CStdString cachedHash; CTextureDetails details;
CStdString cachedImage(GetCachedImage(url, cachedHash)); CStdString cachedImage(GetCachedImage(url, details));
return (!cachedImage.IsEmpty() && cachedImage != url); return (!cachedImage.IsEmpty() && cachedImage != url);
} }


CStdString CTextureCache::GetCachedImage(const CStdString &image, CStdString &cachedHash, bool trackUsage) CStdString CTextureCache::GetCachedImage(const CStdString &image, CTextureDetails &details, bool trackUsage)
{ {
cachedHash.clear();
CStdString url = UnwrapImageURL(image); CStdString url = UnwrapImageURL(image);


if (IsCachedImage(url)) if (IsCachedImage(url))
return url; return url;


// lookup the item in the database // lookup the item in the database
CTextureDetails details;
if (GetCachedTexture(url, details)) if (GetCachedTexture(url, details))
{ {
if (trackUsage) if (trackUsage)
Expand Down Expand Up @@ -136,9 +134,9 @@ bool CTextureCache::CanCacheImageURL(const CURL &url)


CStdString CTextureCache::CheckCachedImage(const CStdString &url, bool returnDDS, bool &needsRecaching) CStdString CTextureCache::CheckCachedImage(const CStdString &url, bool returnDDS, bool &needsRecaching)
{ {
CStdString cachedHash; CTextureDetails details;
CStdString path(GetCachedImage(url, cachedHash, true)); CStdString path(GetCachedImage(url, details, true));
needsRecaching = !cachedHash.IsEmpty(); needsRecaching = !details.hash.empty();
if (!path.IsEmpty()) if (!path.IsEmpty())
{ {
if (!needsRecaching && returnDDS && !URIUtils::IsInPath(url, "special://skin/")) // TODO: should skin images be .dds'd (currently they're not necessarily writeable) if (!needsRecaching && returnDDS && !URIUtils::IsInPath(url, "special://skin/")) // TODO: should skin images be .dds'd (currently they're not necessarily writeable)
Expand All @@ -156,16 +154,25 @@ CStdString CTextureCache::CheckCachedImage(const CStdString &url, bool returnDDS


void CTextureCache::BackgroundCacheImage(const CStdString &url) void CTextureCache::BackgroundCacheImage(const CStdString &url)
{ {
CStdString cacheHash; CTextureDetails details;
CStdString path(GetCachedImage(url, cacheHash)); CStdString path(GetCachedImage(url, details));
if (!path.IsEmpty() && cacheHash.IsEmpty()) if (!path.IsEmpty() && details.hash.empty())
return; // image is already cached and doesn't need to be checked further return; // image is already cached and doesn't need to be checked further


// needs (re)caching // needs (re)caching
AddJob(new CTextureCacheJob(UnwrapImageURL(url), cacheHash)); AddJob(new CTextureCacheJob(UnwrapImageURL(url), details.hash));
}

bool CTextureCache::CacheImage(const CStdString &image, CTextureDetails &details)
{
CStdString path = GetCachedImage(image, details);
if (path.empty()) // not cached
path = CacheImage(image, NULL, &details);

return !path.empty();
} }


CStdString CTextureCache::CacheImage(const CStdString &image, CBaseTexture **texture) CStdString CTextureCache::CacheImage(const CStdString &image, CBaseTexture **texture, CTextureDetails *details)
{ {
CStdString url = UnwrapImageURL(image); CStdString url = UnwrapImageURL(image);
CSingleLock lock(m_processingSection); CSingleLock lock(m_processingSection);
Expand All @@ -177,6 +184,8 @@ CStdString CTextureCache::CacheImage(const CStdString &image, CBaseTexture **tex
CTextureCacheJob job(url); CTextureCacheJob job(url);
bool success = job.CacheTexture(texture); bool success = job.CacheTexture(texture);
OnCachingComplete(success, &job); OnCachingComplete(success, &job);
if (success && details)
*details = job.m_details;
return success ? GetCachedPath(job.m_details.file) : ""; return success ? GetCachedPath(job.m_details.file) : "";
} }
lock.Leave(); lock.Leave();
Expand All @@ -191,8 +200,10 @@ CStdString CTextureCache::CacheImage(const CStdString &image, CBaseTexture **tex
break; break;
} }
} }
CStdString cachedHash; CTextureDetails tempDetails;
return GetCachedImage(url, cachedHash, true); if (!details)
details = &tempDetails;
return GetCachedImage(url, *details, true);
} }


void CTextureCache::ClearCachedImage(const CStdString &url, bool deleteSource /*= false */) void CTextureCache::ClearCachedImage(const CStdString &url, bool deleteSource /*= false */)
Expand Down Expand Up @@ -315,8 +326,8 @@ void CTextureCache::OnJobProgress(unsigned int jobID, unsigned int progress, uns


bool CTextureCache::Export(const CStdString &image, const CStdString &destination, bool overwrite) bool CTextureCache::Export(const CStdString &image, const CStdString &destination, bool overwrite)
{ {
CStdString cachedHash; CTextureDetails details;
CStdString cachedImage(GetCachedImage(image, cachedHash)); CStdString cachedImage(GetCachedImage(image, details));
if (!cachedImage.IsEmpty()) if (!cachedImage.IsEmpty())
{ {
CStdString dest = destination + URIUtils::GetExtension(cachedImage); CStdString dest = destination + URIUtils::GetExtension(cachedImage);
Expand All @@ -332,8 +343,8 @@ bool CTextureCache::Export(const CStdString &image, const CStdString &destinatio


bool CTextureCache::Export(const CStdString &image, const CStdString &destination) bool CTextureCache::Export(const CStdString &image, const CStdString &destination)
{ {
CStdString cachedHash; CTextureDetails details;
CStdString cachedImage(GetCachedImage(image, cachedHash)); CStdString cachedImage(GetCachedImage(image, details));
if (!cachedImage.IsEmpty()) if (!cachedImage.IsEmpty())
{ {
if (CFile::Cache(cachedImage, destination)) if (CFile::Cache(cachedImage, destination))
Expand Down
17 changes: 13 additions & 4 deletions xbmc/TextureCache.h
Expand Up @@ -87,10 +87,19 @@ class CTextureCache : public CJobQueue


\param image url of the image to cache \param image url of the image to cache
\param texture [out] the loaded image \param texture [out] the loaded image
\param details [out] details of the cached image
\return cached url of this image \return cached url of this image
\sa CTextureCacheJob::CacheTexture \sa CTextureCacheJob::CacheTexture
*/ */
CStdString CacheImage(const CStdString &url, CBaseTexture **texture = NULL); CStdString CacheImage(const CStdString &url, CBaseTexture **texture = NULL, CTextureDetails *details = NULL);

/*! \brief Cache an image to image cache if not already cached, returning the image details.
\param image url of the image to cache.
\param details [out] the image details.
\return true if the image is in the cache, false otherwise.
\sa CTextureCacheJob::CacheTexture
*/
bool CacheImage(const CStdString &image, CTextureDetails &details);


/*! \brief Check whether an image is in the cache /*! \brief Check whether an image is in the cache
Note: If the image url won't normally be cached (eg a skin image) this function will return false. Note: If the image url won't normally be cached (eg a skin image) this function will return false.
Expand Down Expand Up @@ -172,12 +181,12 @@ class CTextureCache : public CJobQueue


/*! \brief retrieve the cached version of the given image (if it exists) /*! \brief retrieve the cached version of the given image (if it exists)
\param image url of the image \param image url of the image
\param cacheHash [out] set to the hash of the cached image if it needs checking \param details [out] the details of the texture.
\param trackUsage whether this call should track usage of the image (defaults to false) \param trackUsage whether this call should track usage of the image (defaults to false)
\return cached url of this image, empty if none exists \return cached url of this image, empty if none exists
\sa ClearCachedImage \sa ClearCachedImage, CTextureDetails
*/ */
CStdString GetCachedImage(const CStdString &image, CStdString &cacheHash, bool trackUsage = false); CStdString GetCachedImage(const CStdString &image, CTextureDetails &details, bool trackUsage = false);


/*! \brief Get an image from the database /*! \brief Get an image from the database
Thread-safe wrapper of CTextureDatabase::GetCachedTexture Thread-safe wrapper of CTextureDatabase::GetCachedTexture
Expand Down
5 changes: 2 additions & 3 deletions xbmc/dialogs/GUIDialogContextMenu.h
Expand Up @@ -80,7 +80,7 @@ enum CONTEXT_BUTTON { CONTEXT_BUTTON_CANCELLED = 0,
CONTEXT_BUTTON_SCAN, CONTEXT_BUTTON_SCAN,
CONTEXT_BUTTON_STOP_SCANNING, CONTEXT_BUTTON_STOP_SCANNING,
CONTEXT_BUTTON_SET_ARTIST_THUMB, CONTEXT_BUTTON_SET_ARTIST_THUMB,
CONTEXT_BUTTON_SET_SEASON_THUMB, CONTEXT_BUTTON_SET_SEASON_ART,
CONTEXT_BUTTON_NOW_PLAYING, CONTEXT_BUTTON_NOW_PLAYING,
CONTEXT_BUTTON_CANCEL_PARTYMODE, CONTEXT_BUTTON_CANCEL_PARTYMODE,
CONTEXT_BUTTON_MARK_WATCHED, CONTEXT_BUTTON_MARK_WATCHED,
Expand Down Expand Up @@ -109,11 +109,10 @@ enum CONTEXT_BUTTON { CONTEXT_BUTTON_CANCELLED = 0,
CONTEXT_BUTTON_GROUP_MANAGER, CONTEXT_BUTTON_GROUP_MANAGER,
CONTEXT_BUTTON_CHANNEL_MANAGER, CONTEXT_BUTTON_CHANNEL_MANAGER,
CONTEXT_BUTTON_FILTER, CONTEXT_BUTTON_FILTER,
CONTEXT_BUTTON_SET_MOVIESET_THUMB, CONTEXT_BUTTON_SET_MOVIESET_ART,
CONTEXT_BUTTON_BEGIN, CONTEXT_BUTTON_BEGIN,
CONTEXT_BUTTON_END, CONTEXT_BUTTON_END,
CONTEXT_BUTTON_FIND, CONTEXT_BUTTON_FIND,
CONTEXT_BUTTON_SET_MOVIESET_FANART,
CONTEXT_BUTTON_DELETE_PLUGIN, CONTEXT_BUTTON_DELETE_PLUGIN,
CONTEXT_BUTTON_SORTASC, CONTEXT_BUTTON_SORTASC,
CONTEXT_BUTTON_SORTBY, CONTEXT_BUTTON_SORTBY,
Expand Down
4 changes: 2 additions & 2 deletions xbmc/guilib/GUIListItem.cpp
Expand Up @@ -119,11 +119,11 @@ void CGUIListItem::SetArt(const std::string &type, const std::string &url)
} }
} }


void CGUIListItem::SetArt(const ArtMap &art) void CGUIListItem::SetArt(const ArtMap &art, bool setFallback /* = true */)
{ {
m_art = art; m_art = art;
// ensure that the fallback "thumb" is available // ensure that the fallback "thumb" is available
if (m_art.find("thumb") == m_art.end()) if (setFallback && m_art.find("thumb") == m_art.end())
{ {
if (HasArt("poster")) if (HasArt("poster"))
m_art["thumb"] = m_art["poster"]; m_art["thumb"] = m_art["poster"];
Expand Down
3 changes: 2 additions & 1 deletion xbmc/guilib/GUIListItem.h
Expand Up @@ -85,9 +85,10 @@ class CGUIListItem


/*! \brief set artwork for an item /*! \brief set artwork for an item
\param art a type:url map for artwork \param art a type:url map for artwork
\param setFallback whether to set the "thumb" fallback, defaults to true.
\sa GetArt \sa GetArt
*/ */
void SetArt(const ArtMap &art); void SetArt(const ArtMap &art, bool setFallback = true);


/*! \brief append artwork to an item /*! \brief append artwork to an item
\param art a type:url map for artwork \param art a type:url map for artwork
Expand Down
2 changes: 1 addition & 1 deletion xbmc/interfaces/json-rpc/VideoLibrary.cpp
Expand Up @@ -527,7 +527,7 @@ JSONRPC_STATUS CVideoLibrary::SetTVShowDetails(const CStdString &method, ITransp
std::map<std::string, std::string> artwork; std::map<std::string, std::string> artwork;
videodatabase.GetArtForItem(infos.m_iDbId, infos.m_type, artwork); videodatabase.GetArtForItem(infos.m_iDbId, infos.m_type, artwork);


std::map<int, std::string> seasonArt; std::map<int, std::map<std::string, std::string> > seasonArt;
videodatabase.GetTvShowSeasonArt(infos.m_iDbId, seasonArt); videodatabase.GetTvShowSeasonArt(infos.m_iDbId, seasonArt);


int playcount = infos.m_playCount; int playcount = infos.m_playCount;
Expand Down
45 changes: 29 additions & 16 deletions xbmc/utils/EdenVideoArtUpdater.cpp
Expand Up @@ -93,8 +93,9 @@ void CEdenVideoArtUpdater::Process()
if (!db.GetArtForItem(item->GetVideoInfoTag()->m_iDbId, item->GetVideoInfoTag()->m_type, artwork)) if (!db.GetArtForItem(item->GetVideoInfoTag()->m_iDbId, item->GetVideoInfoTag()->m_type, artwork))
{ {
CStdString art = CVideoInfoScanner::GetImage(item.get(), true, item->GetVideoInfoTag()->m_basePath != item->GetPath(), "thumb"); CStdString art = CVideoInfoScanner::GetImage(item.get(), true, item->GetVideoInfoTag()->m_basePath != item->GetPath(), "thumb");
if (!art.empty() && CacheTexture(art, cachedThumb)) std::string type;
artwork.insert(make_pair("thumb", art)); if (!art.empty() && CacheTexture(art, cachedThumb, type))
artwork.insert(make_pair(type, art));


art = CVideoInfoScanner::GetFanart(item.get(), true); art = CVideoInfoScanner::GetFanart(item.get(), true);
if (!art.empty() && CacheTexture(art, cachedFanart)) if (!art.empty() && CacheTexture(art, cachedFanart))
Expand Down Expand Up @@ -125,8 +126,9 @@ void CEdenVideoArtUpdater::Process()
if (!db.GetArtForItem(item->GetVideoInfoTag()->m_iDbId, item->GetVideoInfoTag()->m_type, artwork)) if (!db.GetArtForItem(item->GetVideoInfoTag()->m_iDbId, item->GetVideoInfoTag()->m_type, artwork))
{ {
CStdString art = CVideoInfoScanner::GetImage(item.get(), true, item->GetVideoInfoTag()->m_basePath != item->GetPath(), "thumb"); CStdString art = CVideoInfoScanner::GetImage(item.get(), true, item->GetVideoInfoTag()->m_basePath != item->GetPath(), "thumb");
if (!art.empty() && CacheTexture(art, cachedThumb)) std::string type;
artwork.insert(make_pair("thumb", art)); if (!art.empty() && CacheTexture(art, cachedThumb, type))
artwork.insert(make_pair(type, art));


art = CVideoInfoScanner::GetFanart(item.get(), true); art = CVideoInfoScanner::GetFanart(item.get(), true);
if (!art.empty() && CacheTexture(art, cachedFanart)) if (!art.empty() && CacheTexture(art, cachedFanart))
Expand Down Expand Up @@ -157,8 +159,9 @@ void CEdenVideoArtUpdater::Process()
if (!db.GetArtForItem(item->GetVideoInfoTag()->m_iDbId, item->GetVideoInfoTag()->m_type, artwork)) if (!db.GetArtForItem(item->GetVideoInfoTag()->m_iDbId, item->GetVideoInfoTag()->m_type, artwork))
{ {
CStdString art = CVideoInfoScanner::GetImage(item.get(), true, false, "thumb"); CStdString art = CVideoInfoScanner::GetImage(item.get(), true, false, "thumb");
if (!art.empty() && CacheTexture(art, cachedThumb)) std::string type;
artwork.insert(make_pair("thumb", art)); if (!art.empty() && CacheTexture(art, cachedThumb, type))
artwork.insert(make_pair(type, art));


art = CVideoInfoScanner::GetFanart(item.get(), true); art = CVideoInfoScanner::GetFanart(item.get(), true);
if (!art.empty() && CacheTexture(art, cachedFanart)) if (!art.empty() && CacheTexture(art, cachedFanart))
Expand All @@ -170,19 +173,21 @@ void CEdenVideoArtUpdater::Process()
} }


// now season art... // now season art...
map<int, string> seasons; map<int, map<string, string> > seasons;
CVideoInfoScanner::GetSeasonThumbs(*item->GetVideoInfoTag(), seasons, true); vector<string> artTypes; artTypes.push_back("thumb");
for (map<int, string>::const_iterator j = seasons.begin(); j != seasons.end(); ++j) CVideoInfoScanner::GetSeasonThumbs(*item->GetVideoInfoTag(), seasons, artTypes, true);
for (map<int, map<string, string> >::const_iterator j = seasons.begin(); j != seasons.end(); ++j)
{ {
if (j->second.empty())
continue;
int idSeason = db.AddSeason(item->GetVideoInfoTag()->m_iDbId, j->first); int idSeason = db.AddSeason(item->GetVideoInfoTag()->m_iDbId, j->first);
if (!db.GetArtForItem(idSeason, "season", "thumb").empty()) map<string, string> seasonArt;
if (idSeason > -1 && !db.GetArtForItem(idSeason, "season", seasonArt))
{ {
std::string cachedSeason = GetCachedSeasonThumb(j->first, item->GetVideoInfoTag()->m_strPath); std::string cachedSeason = GetCachedSeasonThumb(j->first, item->GetVideoInfoTag()->m_strPath);
if (CacheTexture(j->second, cachedSeason)) std::string type;
{ if (CacheTexture(j->second.begin()->second, cachedSeason, type))
if (idSeason > -1) db.SetArtForItem(idSeason, "season", type, j->second.begin()->second);
db.SetArtForItem(idSeason, "season", "thumb", j->second);
}
} }
} }


Expand Down Expand Up @@ -267,13 +272,20 @@ void CEdenVideoArtUpdater::Process()
} }


bool CEdenVideoArtUpdater::CacheTexture(const std::string &originalUrl, const std::string &cachedFile) bool CEdenVideoArtUpdater::CacheTexture(const std::string &originalUrl, const std::string &cachedFile)
{
std::string type;
return CacheTexture(originalUrl, cachedFile, type);
}

bool CEdenVideoArtUpdater::CacheTexture(const std::string &originalUrl, const std::string &cachedFile, std::string &type)
{ {
if (!CFile::Exists(cachedFile)) if (!CFile::Exists(cachedFile))
return false; return false;


CTextureDetails details; CTextureDetails details;
details.updateable = false;; details.updateable = false;
details.hash = "NOHASH"; details.hash = "NOHASH";
type = "thumb"; // unknown art type


CBaseTexture *texture = CTextureCacheJob::LoadImage(cachedFile, 0, 0, ""); CBaseTexture *texture = CTextureCacheJob::LoadImage(cachedFile, 0, 0, "");
if (texture) if (texture)
Expand All @@ -290,6 +302,7 @@ bool CEdenVideoArtUpdater::CacheTexture(const std::string &originalUrl, const st
{ {
details.width = width; details.width = width;
details.height = height; details.height = height;
type = CVideoInfoScanner::GetArtTypeFromSize(details.width, details.height);
delete texture; delete texture;
m_textureDB.AddCachedTexture(originalUrl, details); m_textureDB.AddCachedTexture(originalUrl, details);
return true; return true;
Expand Down
2 changes: 2 additions & 0 deletions xbmc/utils/EdenVideoArtUpdater.h
Expand Up @@ -39,7 +39,9 @@ class CEdenVideoArtUpdater : CThread
/*! \brief Caches the texture from oldCachedFile as if it came from originalUrl into the texture cache. /*! \brief Caches the texture from oldCachedFile as if it came from originalUrl into the texture cache.
\param originalUrl the url that we think the oldCachedFile came from. \param originalUrl the url that we think the oldCachedFile came from.
\param oldCachedFile the old cached file \param oldCachedFile the old cached file
\param type [out] the type of art (poster/banner/thumb)
*/ */
bool CacheTexture(const std::string &originalUrl, const std::string &cachedFile, std::string &type);
bool CacheTexture(const std::string &originalUrl, const std::string &oldCachedFile); bool CacheTexture(const std::string &originalUrl, const std::string &oldCachedFile);


CStdString GetCachedActorThumb(const CFileItem &item); CStdString GetCachedActorThumb(const CFileItem &item);
Expand Down
2 changes: 1 addition & 1 deletion xbmc/utils/RecentlyAddedJob.cpp
Expand Up @@ -135,7 +135,7 @@ bool CRecentlyAddedJob::UpdateVideo()
seasonThumb = videodatabase.GetArtForItem(item->GetVideoInfoTag()->m_iIdSeason, "season", "thumb"); seasonThumb = videodatabase.GetArtForItem(item->GetVideoInfoTag()->m_iIdSeason, "season", "thumb");


home->SetProperty("LatestEpisode." + value + ".Thumb" , item->GetArt("thumb")); home->SetProperty("LatestEpisode." + value + ".Thumb" , item->GetArt("thumb"));
home->SetProperty("LatestEpisode." + value + ".ShowThumb" , item->GetArt("tvshowthumb")); home->SetProperty("LatestEpisode." + value + ".ShowThumb" , item->GetArt("tvshow.thumb"));
home->SetProperty("LatestEpisode." + value + ".SeasonThumb" , seasonThumb); home->SetProperty("LatestEpisode." + value + ".SeasonThumb" , seasonThumb);
home->SetProperty("LatestEpisode." + value + ".Fanart" , item->GetArt("fanart")); home->SetProperty("LatestEpisode." + value + ".Fanart" , item->GetArt("fanart"));
} }
Expand Down