diff options
| -rw-r--r-- | src/qmmp/abstractengine.cpp | 14 | ||||
| -rw-r--r-- | src/qmmp/abstractengine.h | 5 | ||||
| -rw-r--r-- | src/qmmp/soundcore.cpp | 2 |
3 files changed, 16 insertions, 5 deletions
diff --git a/src/qmmp/abstractengine.cpp b/src/qmmp/abstractengine.cpp index cdc324bf7..fa21cfff0 100644 --- a/src/qmmp/abstractengine.cpp +++ b/src/qmmp/abstractengine.cpp @@ -87,6 +87,7 @@ AbstractEngine *AbstractEngine::create(InputSource *s, QObject *parent) if(!fact) continue; engine = fact->create(parent); //engine plugin + engine->setObjectName(item->shortName()); if(!engine->enqueue(s)) { engine->deleteLater(); @@ -138,7 +139,7 @@ EngineFactory *AbstractEngine::findByFilePath(const QString& source) return 0; } -void AbstractEngine::setEnabled(EngineFactory* factory, bool enable) +void AbstractEngine::setEnabled(EngineFactory *factory, bool enable) { loadPlugins(); if (!factories().contains(factory)) @@ -157,12 +158,21 @@ void AbstractEngine::setEnabled(EngineFactory* factory, bool enable) settings.setValue("Engine/disabled_plugins", m_disabledNames); } -bool AbstractEngine::isEnabled(EngineFactory* factory) +bool AbstractEngine::isEnabled(EngineFactory *factory) { loadPlugins(); return !m_disabledNames.contains(factory->properties().shortName); } +bool AbstractEngine::isEnabled(AbstractEngine *engine) +{ + if(engine->objectName().isEmpty()) //qmmp engine + return true; + + loadPlugins(); + return !m_disabledNames.contains(engine->objectName()); +} + QString AbstractEngine::file(EngineFactory *factory) { loadPlugins(); diff --git a/src/qmmp/abstractengine.h b/src/qmmp/abstractengine.h index 2b59527d9..603bc078a 100644 --- a/src/qmmp/abstractengine.h +++ b/src/qmmp/abstractengine.h @@ -100,12 +100,13 @@ public: * @param factory Engine plugin factory. * @param enable Plugin enable state (\b true - enable, \b false - disable) */ - static void setEnabled(EngineFactory* factory, bool enable = true); + static void setEnabled(EngineFactory *factory, bool enable = true); /*! * Returns \b true if engine is enabled, otherwise returns \b false * @param factory Engine plugin factory. */ - static bool isEnabled(EngineFactory* factory); + static bool isEnabled(EngineFactory *factory); + static bool isEnabled(AbstractEngine *engine); /*! * Returns plugin file path. * @param factory Engine plugin factory. diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp index ccd930471..62c78c07d 100644 --- a/src/qmmp/soundcore.cpp +++ b/src/qmmp/soundcore.cpp @@ -295,7 +295,7 @@ void SoundCore::startNextSource() return; } } - else if(m_engine->enqueue(s)) + else if(AbstractEngine::isEnabled(m_engine) && m_engine->enqueue(s)) { if(state() == Qmmp::Stopped || state() == Qmmp::Buffering) { |
