aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/qmmp/metadatamanager.cpp21
-rw-r--r--src/qmmp/metadatamanager.h7
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;
};