diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-12-04 22:05:43 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-12-04 22:05:43 +0000 |
| commit | c08ac018c4a5c9d74c272ded434e9c664dd2ff1a (patch) | |
| tree | b278123c6151a034895c15eeb6850a01ff997e06 | |
| parent | 07e1d5d6dcc5c9f9e345e948267c3612e8fa87e0 (diff) | |
| download | qmmp-c08ac018c4a5c9d74c272ded434e9c664dd2ff1a.tar.gz qmmp-c08ac018c4a5c9d74c272ded434e9c664dd2ff1a.tar.bz2 qmmp-c08ac018c4a5c9d74c272ded434e9c664dd2ff1a.zip | |
some code optimizations
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1996 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/Input/mad/decodermadfactory.cpp | 1 | ||||
| -rw-r--r-- | src/qmmp/abstractengine.cpp | 29 | ||||
| -rw-r--r-- | src/qmmp/abstractengine.h | 3 | ||||
| -rw-r--r-- | src/qmmp/soundcore.cpp | 39 |
4 files changed, 46 insertions, 26 deletions
diff --git a/src/plugins/Input/mad/decodermadfactory.cpp b/src/plugins/Input/mad/decodermadfactory.cpp index 39f31d9da..77d6b3ed2 100644 --- a/src/plugins/Input/mad/decodermadfactory.cpp +++ b/src/plugins/Input/mad/decodermadfactory.cpp @@ -55,7 +55,6 @@ bool DecoderMADFactory::supports(const QString &source) const return true; } } - qDebug("false"); return false; } diff --git a/src/qmmp/abstractengine.cpp b/src/qmmp/abstractengine.cpp index a9115d777..a5af83637 100644 --- a/src/qmmp/abstractengine.cpp +++ b/src/qmmp/abstractengine.cpp @@ -23,6 +23,7 @@ #include <QPluginLoader> #include <QApplication> #include "enginefactory.h" +#include "qmmpaudioengine.h" #include "qmmp.h" #include "abstractengine.h" @@ -93,6 +94,34 @@ void AbstractEngine::checkFactories() } } +AbstractEngine *AbstractEngine::create(InputSource *s, QObject *parent) +{ + AbstractEngine *engine = new QmmpAudioEngine(parent); //internal engine + if(!engine->enqueue(s)) + { + engine->deleteLater(); + engine = 0; + } + else + return engine; + + + foreach(EngineFactory *f, *m_factories) + { + if(!isEnabled(f)) + continue; + engine = f->create(parent); //engine plugin + if(!engine->enqueue(s)) + { + engine->deleteLater(); + engine = 0; + } + else + break; + } + return engine; +} + QList<EngineFactory*> *AbstractEngine::factories() { checkFactories(); diff --git a/src/qmmp/abstractengine.h b/src/qmmp/abstractengine.h index 5792bb775..007288d1f 100644 --- a/src/qmmp/abstractengine.h +++ b/src/qmmp/abstractengine.h @@ -79,6 +79,9 @@ public: * Returns wait condition pointer. */ QWaitCondition *cond(); + + + static AbstractEngine *create(InputSource *s, QObject *parent = 0); /*! * Returns a list of decoder factories. */ diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp index b0dd90cdd..bb51780c5 100644 --- a/src/qmmp/soundcore.cpp +++ b/src/qmmp/soundcore.cpp @@ -227,8 +227,19 @@ bool SoundCore::enqueue(InputSource *s) m_url = s->url(); if(!m_engine) { - m_engine = new QmmpAudioEngine(this); - connect(m_engine, SIGNAL(playbackFinished()), SIGNAL(finished())); + if((m_engine = AbstractEngine::create(s, this))) + { + connect(m_engine, SIGNAL(playbackFinished()), SIGNAL(finished())); + m_engine->play(); + m_handler->setCurrentEngine(m_engine); + return true; + } + else + { + s->deleteLater(); + m_handler->setCurrentEngine(0); + return false; + } } if(m_engine->enqueue(s)) @@ -241,31 +252,9 @@ bool SoundCore::enqueue(InputSource *s) } else { - //current engine doesn't support this stream, trying to find another - AbstractEngine *engine = new QmmpAudioEngine(this); //internal engine - if(!engine->enqueue(s)) - { - engine->deleteLater(); - engine = 0; - } - + AbstractEngine *engine = AbstractEngine::create(s, this); if(!engine) { - foreach(EngineFactory *f, *AbstractEngine::factories()) - { - engine = f->create(this); //engine plugin - if(!engine->enqueue(s)) - { - engine->deleteLater(); - engine = 0; - } - else - break; - } - } - - if(!engine) //unsupported file format - { s->deleteLater(); m_handler->setCurrentEngine(0); return false; |
