From 63c7d1d89c01e8e8917f56ce4bde1414a3eb8c4a Mon Sep 17 00:00:00 2001 From: Jonathan Marshall Date: Mon, 12 Nov 2012 18:42:47 +1300 Subject: construct image and preview URLs when unpacking fanart to make sure the url attribute applies only to the block being processed. fixes #12860 --- xbmc/utils/Fanart.cpp | 31 +++++++++++++++++-------------- xbmc/utils/Fanart.h | 1 - 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/xbmc/utils/Fanart.cpp b/xbmc/utils/Fanart.cpp index 3b2e4dbe5b..d947dcb531 100644 --- a/xbmc/utils/Fanart.cpp +++ b/xbmc/utils/Fanart.cpp @@ -39,7 +39,6 @@ void CFanart::Pack() // Take our data and pack it into the m_xml string m_xml.Empty(); TiXmlElement fanart("fanart"); - fanart.SetAttribute("url", m_url.c_str()); for (std::vector::const_iterator it = m_fanart.begin(); it != m_fanart.end(); ++it) { TiXmlElement thumb("thumb"); @@ -59,19 +58,28 @@ bool CFanart::Unpack() doc.Parse(m_xml.c_str()); m_fanart.clear(); - m_url.Empty(); TiXmlElement *fanart = doc.FirstChildElement("fanart"); while (fanart) { - m_url = fanart->Attribute("url"); + CStdString url = fanart->Attribute("url"); TiXmlElement *fanartThumb = fanart->FirstChildElement("thumb"); while (fanartThumb) { SFanartData data; - data.strImage = fanartThumb->GetText(); + if (url.empty()) + { + data.strImage = fanartThumb->GetText(); + if (fanartThumb->Attribute("preview")) + data.strPreview = fanartThumb->Attribute("preview"); + } + else + { + data.strImage = URIUtils::AddFileToFolder(url, fanartThumb->GetText()); + if (fanartThumb->Attribute("preview")) + data.strPreview = URIUtils::AddFileToFolder(url, fanartThumb->Attribute("preview")); + } data.strResolution = fanartThumb->Attribute("dim"); - data.strPreview = fanartThumb->Attribute("preview"); ParseColors(fanartThumb->Attribute("colors"), data.strColors); m_fanart.push_back(data); fanartThumb = fanartThumb->NextSiblingElement("thumb"); @@ -85,21 +93,16 @@ CStdString CFanart::GetImageURL(unsigned int index) const { if (index >= m_fanart.size()) return ""; - - if (m_url.IsEmpty()) - return m_fanart[index].strImage; - return URIUtils::AddFileToFolder(m_url, m_fanart[index].strImage); + + return m_fanart[index].strImage; } CStdString CFanart::GetPreviewURL(unsigned int index) const { if (index >= m_fanart.size()) return ""; - - CStdString thumb = !m_fanart[index].strPreview.IsEmpty() ? m_fanart[index].strPreview : m_fanart[index].strImage; - if (m_url.IsEmpty()) - return thumb; - return URIUtils::AddFileToFolder(m_url, thumb); + + return m_fanart[index].strPreview.empty() ? m_fanart[index].strImage : m_fanart[index].strPreview; } const CStdString CFanart::GetColor(unsigned int index) const diff --git a/xbmc/utils/Fanart.h b/xbmc/utils/Fanart.h index c44f76b360..b3fdd8f9f0 100644 --- a/xbmc/utils/Fanart.h +++ b/xbmc/utils/Fanart.h @@ -115,7 +115,6 @@ private: /// /// std::vector that stores all our fanart data std::vector m_fanart; - CStdString m_url; }; #endif -- cgit v1.2.3