diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-01-11 11:39:35 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-01-11 11:39:35 +0000 |
| commit | ed1bb5623896afba84efd0d402ce88a76fae6355 (patch) | |
| tree | 766043c2f7ec2cb3733bcc9e3f1bef6dc700d798 | |
| parent | abd3ecb5901119fcb52cf716cd93fe1e3223ec42 (diff) | |
| download | qmmp-ed1bb5623896afba84efd0d402ce88a76fae6355.tar.gz qmmp-ed1bb5623896afba84efd0d402ce88a76fae6355.tar.bz2 qmmp-ed1bb5623896afba84efd0d402ce88a76fae6355.zip | |
added cover cache
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4019 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/qmmp/metadatamanager.cpp | 21 | ||||
| -rw-r--r-- | src/qmmp/metadatamanager.h | 7 |
2 files changed, 20 insertions, 8 deletions
diff --git a/src/qmmp/metadatamanager.cpp b/src/qmmp/metadatamanager.cpp index c1a0acf66..4d4309dcc 100644 --- a/src/qmmp/metadatamanager.cpp +++ b/src/qmmp/metadatamanager.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009-2013 by Ilya Kotov * + * Copyright (C) 2009-2014 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -179,7 +179,16 @@ QPixmap MetaDataManager::getCover(const QString &url) { QString p = getCoverPath(url); if(!p.isEmpty()) - return QPixmap(p); + { + if(m_cached_path == p) + return m_cached_cover; + QPixmap pix(p); + if(pix.width() > 1024 || pix.height() > 1024) + pix = pix.scaled(1024, 1024, Qt::KeepAspectRatio); + m_cached_path = p; + m_cached_cover = pix; + return pix; + } } MetaDataModel *model = createMetaDataModel(url); if(model) @@ -208,11 +217,11 @@ QString MetaDataManager::getCoverPath(const QString &url) else //local file { QString p = QFileInfo(url).absolutePath(); - if(m_cover_cache.keys().contains(p)) - return m_cover_cache.value(p); + 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_cache.insert (p, cover_path); + m_cover_path_cache.insert (p, cover_path); return cover_path; } return QString(); @@ -249,7 +258,7 @@ QFileInfoList MetaDataManager::findCoverFiles(QDir dir, int depth) const void MetaDataManager::clearCoverChache() { - m_cover_cache.clear(); + m_cover_path_cache.clear(); } void MetaDataManager::prepareForAnotherThread() diff --git a/src/qmmp/metadatamanager.h b/src/qmmp/metadatamanager.h index 2620b1d4e..8fc872793 100644 --- a/src/qmmp/metadatamanager.h +++ b/src/qmmp/metadatamanager.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009-2012 by Ilya Kotov * + * Copyright (C) 2009-2014 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -109,9 +109,12 @@ public: private: QFileInfoList findCoverFiles(QDir dir, int depth) const; - QMap <QString, QString> m_cover_cache; + QMap <QString, QString> m_cover_path_cache; + QPixmap m_cached_cover; + QString m_cached_path; QmmpSettings *m_settings; mutable QMutex m_mutex; + static MetaDataManager* m_instance; }; |
