aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/qmmp/abstractengine.cpp14
-rw-r--r--src/qmmp/abstractengine.h5
-rw-r--r--src/qmmp/soundcore.cpp2
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)
{