aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/Engines/mplayer/mplayerengine.cpp9
-rw-r--r--src/qmmp/abstractengine.cpp1
-rw-r--r--src/qmmp/soundcore.cpp3
-rw-r--r--src/qmmpui/fileloader.cpp9
-rw-r--r--src/qmmpui/fileloader.h1
-rw-r--r--src/qmmpui/mediaplayer.cpp42
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++;
}