From 5133e60f55d8d972d66fa5629d952daebf679cad Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Sun, 12 May 2013 13:37:06 +0000 Subject: do not load disabled decoders if possiple git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3451 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/General/mpris/mpris2/root2object.cpp | 2 +- src/qmmp/decoder.cpp | 12 ++++++++++++ src/qmmp/decoder.h | 4 ++++ src/qmmp/metadatamanager.cpp | 6 +++--- 4 files changed, 20 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/General/mpris/mpris2/root2object.cpp b/src/plugins/General/mpris/mpris2/root2object.cpp index 126a81391..6faf180e6 100644 --- a/src/plugins/General/mpris/mpris2/root2object.cpp +++ b/src/plugins/General/mpris/mpris2/root2object.cpp @@ -64,7 +64,7 @@ QString Root2Object::identity() const QStringList Root2Object::supportedMimeTypes() const { QStringList mimeTypes; - foreach(DecoderFactory *factory, Decoder::factories()) + foreach(DecoderFactory *factory, Decoder::enabledFactories()) mimeTypes << factory->properties().contentTypes; foreach(EngineFactory *factory, *AbstractEngine::factories()) mimeTypes << factory->properties().contentTypes; diff --git a/src/qmmp/decoder.cpp b/src/qmmp/decoder.cpp index 2539b9e33..26a4d740a 100644 --- a/src/qmmp/decoder.cpp +++ b/src/qmmp/decoder.cpp @@ -283,3 +283,15 @@ QList Decoder::factories() } return list; } + +QList Decoder::enabledFactories() +{ + loadPlugins(); + QList list; + foreach (QmmpPluginCache *item, *m_cache) + { + if(!m_disabledNames.contains(item->shortName()) && item->decoderFactory()) + list.append(item->decoderFactory()); + } + return list; +} diff --git a/src/qmmp/decoder.h b/src/qmmp/decoder.h index 1af07a5c6..4d586fc13 100644 --- a/src/qmmp/decoder.h +++ b/src/qmmp/decoder.h @@ -130,6 +130,10 @@ public: * Returns a list of decoder factories. */ static QList factories(); + /*! + * Returns a list of enabled decoder factories. + */ + static QList enabledFactories(); /*! * Returns plugin file path. * @param factory Decoder plugin factory. diff --git a/src/qmmp/metadatamanager.cpp b/src/qmmp/metadatamanager.cpp index f0cc7d88c..87f4625a2 100644 --- a/src/qmmp/metadatamanager.cpp +++ b/src/qmmp/metadatamanager.cpp @@ -115,9 +115,9 @@ MetaDataModel* MetaDataManager::createMetaDataModel(const QString &path, QObject QStringList MetaDataManager::filters() const { QStringList filters; - foreach(DecoderFactory *fact, Decoder::factories()) + foreach(DecoderFactory *fact, Decoder::enabledFactories()) { - if (Decoder::isEnabled(fact) && !fact->properties().filters.isEmpty()) + if (!fact->properties().filters.isEmpty()) filters << fact->properties().description + " (" + fact->properties().filters.join(" ") + ")"; } foreach(EngineFactory *fact, *AbstractEngine::factories()) @@ -131,7 +131,7 @@ QStringList MetaDataManager::filters() const QStringList MetaDataManager::nameFilters() const { QStringList filters; - foreach(DecoderFactory *fact, Decoder::factories()) + foreach(DecoderFactory *fact, Decoder::enabledFactories()) { if (Decoder::isEnabled(fact)) filters << fact->properties().filters; -- cgit v1.2.3-13-gbd6f