diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/qmmp/decoder.cpp | 1 | ||||
| -rw-r--r-- | src/qmmp/qmmpplugincache.cpp | 16 | ||||
| -rw-r--r-- | src/qmmp/qmmpplugincache_p.h | 2 |
3 files changed, 19 insertions, 0 deletions
diff --git a/src/qmmp/decoder.cpp b/src/qmmp/decoder.cpp index a41efacdd..bf4b50be2 100644 --- a/src/qmmp/decoder.cpp +++ b/src/qmmp/decoder.cpp @@ -113,6 +113,7 @@ void Decoder::checkFactories() } m_disabledNames = settings.value("Decoder/disabled_plugins").toStringList(); qSort(m_cache->begin(), m_cache->end(), _pluginCacheLessComparator); + QmmpPluginCache::clearCache(&settings); } QString Decoder::file(DecoderFactory *factory) diff --git a/src/qmmp/qmmpplugincache.cpp b/src/qmmp/qmmpplugincache.cpp index 68643d1de..b98020327 100644 --- a/src/qmmp/qmmpplugincache.cpp +++ b/src/qmmp/qmmpplugincache.cpp @@ -137,3 +137,19 @@ QObject *QmmpPluginCache::instance() } return m_instance; } + +void QmmpPluginCache::cleanup(QSettings *settings) +{ + settings->beginGroup("PluginCache"); + + foreach (QString key, settings->allKeys()) + { + //TODO win32 support + if(!QFile::exists("/" + key)) + { + settings->remove(key); + qDebug("QmmpPluginCache: removed key %s", qPrintable(key)); + } + } + settings->endGroup(); +} diff --git a/src/qmmp/qmmpplugincache_p.h b/src/qmmp/qmmpplugincache_p.h index 028e1f561..ec76b986c 100644 --- a/src/qmmp/qmmpplugincache_p.h +++ b/src/qmmp/qmmpplugincache_p.h @@ -46,6 +46,8 @@ public: //OutputFactory *outputFactory(); //EngineFactory *engineFactory(); + static void cleanup(QSettings *settings); + private: QObject *instance(); QString m_path; |
