diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/qmmp/metadatamanager.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/qmmp/metadatamanager.cpp b/src/qmmp/metadatamanager.cpp index a4c1fa8e4..c1189736f 100644 --- a/src/qmmp/metadatamanager.cpp +++ b/src/qmmp/metadatamanager.cpp @@ -62,8 +62,26 @@ QList <FileInfo *> MetaDataManager::createPlayList(const QString &fileName, bool return efact->createPlayList(fileName, useMetaData); return list; } - else if(protocols().contains(fileName.section("://",0,0))) - list << new FileInfo(fileName); + else + { + QString scheme = fileName.section("://",0,0); + QStringList p; + foreach(InputSourceFactory *f, *m_inputSourceFactories) + { + p << f->properties().protocols.split(" ", QString::SkipEmptyParts); + } + if(p.contains(scheme)) + { + list << new FileInfo(fileName); + return list; + } + foreach(fact, *m_decoderFactories) + { + p = fact->properties().protocols.split(" ", QString::SkipEmptyParts); + if(p.contains(scheme) && Decoder::isEnabled(fact)) + return fact->createPlayList(fileName, useMetaData); + } + } return list; } |
