From ffef9491700965c061f4bdb7dd61c125d2eb2bf9 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Wed, 2 Mar 2011 19:13:55 +0000 Subject: added possibility to skip invalid tracks (Fixes issue 400) (Fixes issue 413) git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2079 90c681e8-e032-0410-971d-27865f9a5e38 --- src/qmmpui/mediaplayer.cpp | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'src/qmmpui/mediaplayer.cpp') diff --git a/src/qmmpui/mediaplayer.cpp b/src/qmmpui/mediaplayer.cpp index 721a71ae8..ea45c2b78 100644 --- a/src/qmmpui/mediaplayer.cpp +++ b/src/qmmpui/mediaplayer.cpp @@ -62,6 +62,7 @@ void MediaPlayer::initialize(SoundCore *core, PlayListManager *pl_manager) m_noPlaylistAdvance = false; connect(m_core, SIGNAL(nextTrackRequest()), SLOT(updateNextUrl())); connect(m_core, SIGNAL(finished()), SLOT(playNext())); + connect(m_core, SIGNAL(stateChanged(Qmmp::State)), SLOT(processState(Qmmp::State))); } PlayListManager *MediaPlayer::playListManager() @@ -103,7 +104,7 @@ void MediaPlayer::play(qint64 offset) return; } - if (!m_core->play(s, false, offset)) + /*if (!m_core->play(s, false, offset)) { //find out the reason why playback failed switch ((int) m_core->state()) @@ -139,7 +140,10 @@ void MediaPlayer::play(qint64 offset) } } else - m_skips = 0; + m_skips = 0;*/ + + m_core->play(s, false, offset); + m_skips = 0; } void MediaPlayer::stop() @@ -245,3 +249,26 @@ void MediaPlayer::updateNextUrl() qDebug("MediaPlayer: next track state: unknown"); } + +void MediaPlayer::processState(Qmmp::State state) +{ + switch ((int) state) + { + case Qmmp::NormalError: + stop(); + //playNext(); + if (m_skips < MAX_SKIPS) + { + //stop(); + //qWarning("MediaPlayer: skip limit exceeded"); + playNext(); + m_skips++; + } + break; + case Qmmp::FatalError: + stop(); + break; + default: + m_skips = 0; + } +} -- cgit v1.2.3-13-gbd6f