aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-09-12 10:12:03 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-09-12 10:12:03 +0000
commit8b693a8cf53008d6da4a51a3e239a0b93ab9c97a (patch)
treea3bfd4180370a781cd3bd153ca46dc0d5de4ea7f
parentce25692d5481fd0da3f73e562a693da1a9177c61 (diff)
downloadqmmp-8b693a8cf53008d6da4a51a3e239a0b93ab9c97a.tar.gz
qmmp-8b693a8cf53008d6da4a51a3e239a0b93ab9c97a.tar.bz2
qmmp-8b693a8cf53008d6da4a51a3e239a0b93ab9c97a.zip
fixed cover loading sequence
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4460 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/qmmp/metadatamanager.cpp34
1 files changed, 21 insertions, 13 deletions
diff --git a/src/qmmp/metadatamanager.cpp b/src/qmmp/metadatamanager.cpp
index 91b5bc3b0..e86fb3db4 100644
--- a/src/qmmp/metadatamanager.cpp
+++ b/src/qmmp/metadatamanager.cpp
@@ -176,6 +176,15 @@ bool MetaDataManager::supports(const QString &fileName) const
QPixmap MetaDataManager::getCover(const QString &url)
{
+ MetaDataModel *model = createMetaDataModel(url);
+ if(model)
+ {
+ QPixmap pix = model->cover();
+ model->deleteLater();
+ if(!pix.isNull())
+ return pix;
+ }
+
if(!url.contains("://") && m_settings->useCoverFiles())
{
QString p = getCoverPath(url);
@@ -191,13 +200,7 @@ QPixmap MetaDataManager::getCover(const QString &url)
return pix;
}
}
- MetaDataModel *model = createMetaDataModel(url);
- if(model)
- {
- QPixmap pix = model->cover();
- model->deleteLater();
- return pix;
- }
+
return QPixmap();
}
@@ -217,12 +220,16 @@ QString MetaDataManager::getCoverPath(const QString &url)
}
else //local file
{
- QString p = QFileInfo(url).absolutePath();
- if(m_cover_path_cache.keys().contains(p))
- return m_cover_path_cache.value(p);
- QFileInfoList l = findCoverFiles(p, m_settings->coverSearchDepth());
- QString cover_path = l.isEmpty() ? QString() : l.at(0).filePath();
- m_cover_path_cache.insert (p, cover_path);
+ QString key = QFileInfo(url).absolutePath();
+ QString cover_path = m_cover_path_cache.value(key);
+
+ if(!cover_path.isEmpty() && QFile::exists(cover_path))
+ return cover_path;
+
+ m_cover_path_cache.remove(key); //remove invalid key
+ QFileInfoList l = findCoverFiles(key, m_settings->coverSearchDepth());
+ cover_path = l.isEmpty() ? QString() : l.at(0).filePath();
+ m_cover_path_cache.insert (key, cover_path);
return cover_path;
}
return QString();
@@ -260,6 +267,7 @@ QFileInfoList MetaDataManager::findCoverFiles(QDir dir, int depth) const
void MetaDataManager::clearCoverChache()
{
m_cover_path_cache.clear();
+ m_cached_cover = QPixmap();
}
void MetaDataManager::prepareForAnotherThread()