diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-04-10 20:50:28 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-04-10 20:50:28 +0000 |
| commit | d797b6af7c3d86cffd26ff8a1d4844dc5cc730b5 (patch) | |
| tree | e9609cb08d6953c18be48bb3d7592c36c7ae5e8b | |
| parent | de2cf5e954ce3a1166deede76a539446f85a9e08 (diff) | |
| download | qmmp-d797b6af7c3d86cffd26ff8a1d4844dc5cc730b5.tar.gz qmmp-d797b6af7c3d86cffd26ff8a1d4844dc5cc730b5.tar.bz2 qmmp-d797b6af7c3d86cffd26ff8a1d4844dc5cc730b5.zip | |
fixed regression, fixed signals synchronization (Fixes issue 447), fixed
mplayer engine bugs
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2152 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/Engines/mplayer/mplayerengine.cpp | 9 | ||||
| -rw-r--r-- | src/qmmp/abstractengine.cpp | 1 | ||||
| -rw-r--r-- | src/qmmp/soundcore.cpp | 3 | ||||
| -rw-r--r-- | src/qmmpui/fileloader.cpp | 9 | ||||
| -rw-r--r-- | src/qmmpui/fileloader.h | 1 | ||||
| -rw-r--r-- | src/qmmpui/mediaplayer.cpp | 42 |
6 files changed, 12 insertions, 53 deletions
diff --git a/src/plugins/Engines/mplayer/mplayerengine.cpp b/src/plugins/Engines/mplayer/mplayerengine.cpp index 39aaa5401..7471cc6cd 100644 --- a/src/plugins/Engines/mplayer/mplayerengine.cpp +++ b/src/plugins/Engines/mplayer/mplayerengine.cpp @@ -167,14 +167,11 @@ void MplayerEngine::seek(qint64 pos) void MplayerEngine::stop() { - if (m_process->state() == QProcess::Running) - { - m_process->write("quit\n"); - m_process->waitForFinished(1500); - } - StateHandler::instance()->dispatch(Qmmp::Stopped); while(!m_sources.isEmpty()) m_sources.dequeue()->deleteLater(); + m_process->write("quit\n"); + m_process->close(); + StateHandler::instance()->dispatch(Qmmp::Stopped); } void MplayerEngine::pause() diff --git a/src/qmmp/abstractengine.cpp b/src/qmmp/abstractengine.cpp index a5af83637..308d9fc41 100644 --- a/src/qmmp/abstractengine.cpp +++ b/src/qmmp/abstractengine.cpp @@ -106,6 +106,7 @@ AbstractEngine *AbstractEngine::create(InputSource *s, QObject *parent) return engine; + checkFactories(); foreach(EngineFactory *f, *m_factories) { if(!isEnabled(f)) diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp index ad33a6e7c..45d56507b 100644 --- a/src/qmmp/soundcore.cpp +++ b/src/qmmp/soundcore.cpp @@ -71,10 +71,7 @@ SoundCore::~SoundCore() bool SoundCore::play(const QString &source, bool queue, qint64 offset) { if(!queue) - { stop(); - qApp->processEvents(QEventLoop::ExcludeUserInputEvents); - } else { qDeleteAll(m_pendingSources); diff --git a/src/qmmpui/fileloader.cpp b/src/qmmpui/fileloader.cpp index 9e48e8cfe..203d147fe 100644 --- a/src/qmmpui/fileloader.cpp +++ b/src/qmmpui/fileloader.cpp @@ -41,11 +41,10 @@ void FileLoader::addFile(const QString &path) void FileLoader::addDirectory(const QString& s) { - QStringList filters = MetaDataManager::instance()->nameFilters(); QDir dir(s); dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); dir.setSorting(QDir::Name); - QFileInfoList l = dir.entryInfoList(filters); + QFileInfoList l = dir.entryInfoList(m_filters); foreach(QFileInfo info, l) { addFile(info.absoluteFilePath ()); @@ -85,18 +84,24 @@ void FileLoader::run() void FileLoader::loadFile(const QString &path) { m_files.enqueue(path); + if(m_filters.isEmpty()) + m_filters = MetaDataManager::instance()->nameFilters(); start(QThread::IdlePriority); } void FileLoader::loadFiles(const QStringList &paths) { m_files << paths; + if(m_filters.isEmpty()) + m_filters = MetaDataManager::instance()->nameFilters(); start(QThread::IdlePriority); } void FileLoader::loadDirectory(const QString &path) { m_directories.enqueue(path); + if(m_filters.isEmpty()) + m_filters = MetaDataManager::instance()->nameFilters(); start(QThread::IdlePriority); } diff --git a/src/qmmpui/fileloader.h b/src/qmmpui/fileloader.h index afa356183..f3c89b490 100644 --- a/src/qmmpui/fileloader.h +++ b/src/qmmpui/fileloader.h @@ -81,6 +81,7 @@ protected: private: QQueue <QString> m_files; QQueue <QString> m_directories; + QStringList m_filters; bool m_finished; }; diff --git a/src/qmmpui/mediaplayer.cpp b/src/qmmpui/mediaplayer.cpp index ea45c2b78..21051c7fe 100644 --- a/src/qmmpui/mediaplayer.cpp +++ b/src/qmmpui/mediaplayer.cpp @@ -103,45 +103,6 @@ void MediaPlayer::play(qint64 offset) m_nextUrl.clear(); return; } - - /*if (!m_core->play(s, false, offset)) - { - //find out the reason why playback failed - switch ((int) m_core->state()) - { - case Qmmp::FatalError: - { - stop(); - return; //unrecovable error in output, so abort playing - } - case Qmmp::NormalError: - { - //error in decoder, so we should try to play next song - m_skips++; - if (m_skips > MAX_SKIPS) - { - stop(); - qWarning("MediaPlayer: skip limit exceeded"); - break; - } - qApp->processEvents(); - if (!m_pl_manager->currentPlayList()->isEmptyQueue()) - { - m_pl_manager->currentPlayList()->setCurrentToQueued(); - } - else if (!m_pl_manager->currentPlayList()->next()) - { - stop(); - return; - } - play(); - break; - } - } - } - else - m_skips = 0;*/ - m_core->play(s, false, offset); m_skips = 0; } @@ -256,11 +217,8 @@ void MediaPlayer::processState(Qmmp::State state) { case Qmmp::NormalError: stop(); - //playNext(); if (m_skips < MAX_SKIPS) { - //stop(); - //qWarning("MediaPlayer: skip limit exceeded"); playNext(); m_skips++; } |
