diff options
author | Gareth Stockwell <ext-gareth.stockwell@nokia.com> | 2009-12-01 14:35:43 (GMT) |
---|---|---|
committer | Gareth Stockwell <ext-gareth.stockwell@nokia.com> | 2009-12-02 14:19:42 (GMT) |
commit | dfa9343cc1e634eebdb0f3a2cf931ada9829ae6b (patch) | |
tree | 30d78abd3e3c027b253a3ea94707ce29b3465f7f | |
parent | 3ed427637dd76da371174e14b0f7f2a15801fcac (diff) | |
download | Qt-dfa9343cc1e634eebdb0f3a2cf931ada9829ae6b.zip Qt-dfa9343cc1e634eebdb0f3a2cf931ada9829ae6b.tar.gz Qt-dfa9343cc1e634eebdb0f3a2cf931ada9829ae6b.tar.bz2 |
Fixed bug which caused Phonon backend error messages to be suppressed
When the mediaplayer receives a state change into the ErrorState, it
calls pause() on the media object. Previously, this caused the
backend to transition into PausedState. When the mediaplayer subsequently
called errorString() to retrieve the error message, an empty string was
returned because the backend was no longer in the ErrorState.
Task-number: QTBUG-4994
Reviewed-by: trustme
-rw-r--r-- | src/3rdparty/phonon/mmf/abstractmediaplayer.cpp | 11 | ||||
-rw-r--r-- | src/3rdparty/phonon/mmf/mmf_videoplayer.cpp | 2 |
2 files changed, 7 insertions, 6 deletions
diff --git a/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp b/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp index bc38513..adade9c 100644 --- a/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp +++ b/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp @@ -104,21 +104,22 @@ void MMF::AbstractMediaPlayer::pause() TRACE_ENTRY("state %d", privateState()); m_playPending = false; + stopTickTimer(); switch (privateState()) { case GroundState: case LoadingState: case PausedState: + case StoppedState: // Do nothing break; - case StoppedState: case PlayingState: - case ErrorState: case BufferingState: - doPause(); - stopTickTimer(); changeState(PausedState); + // Fall through + case ErrorState: + doPause(); break; // Protection against adding new states and forgetting to update this switch @@ -135,6 +136,7 @@ void MMF::AbstractMediaPlayer::stop() TRACE_ENTRY("state %d", privateState()); m_playPending = false; + stopTickTimer(); switch (privateState()) { case GroundState: @@ -148,7 +150,6 @@ void MMF::AbstractMediaPlayer::stop() case BufferingState: case PausedState: doStop(); - stopTickTimer(); changeState(StoppedState); break; diff --git a/src/3rdparty/phonon/mmf/mmf_videoplayer.cpp b/src/3rdparty/phonon/mmf/mmf_videoplayer.cpp index 4619f54..eb6f690 100644 --- a/src/3rdparty/phonon/mmf/mmf_videoplayer.cpp +++ b/src/3rdparty/phonon/mmf/mmf_videoplayer.cpp @@ -127,7 +127,7 @@ void MMF::VideoPlayer::doPause() TRACE_CONTEXT(VideoPlayer::doPause, EVideoApi); TRAPD(err, m_player->PauseL()); - if (KErrNone != err) { + if (KErrNone != err && state() != ErrorState) { TRACE("PauseL error %d", err); setError(tr("Pause failed"), err); } |