diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-09-12 10:12:03 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-09-12 10:12:03 +0000 |
| commit | 8b693a8cf53008d6da4a51a3e239a0b93ab9c97a (patch) | |
| tree | a3bfd4180370a781cd3bd153ca46dc0d5de4ea7f | |
| parent | ce25692d5481fd0da3f73e562a693da1a9177c61 (diff) | |
| download | qmmp-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.cpp | 34 |
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() |
