diff options
author | Frans Englich <frans.englich@nokia.com> | 2009-10-23 09:52:05 (GMT) |
---|---|---|
committer | Frans Englich <frans.englich@nokia.com> | 2009-10-23 13:52:36 (GMT) |
commit | 58efa8aa5e845af2e3db840a8a654bd55fb98fb0 (patch) | |
tree | 3078f5035ac9daff38d220d74400a1e59cca8628 /src/3rdparty/phonon/mmf/mediaobject.cpp | |
parent | 1c6bd7f61d2cbe0b8c0fa451f5f9a7efdfaf04c7 (diff) | |
download | Qt-58efa8aa5e845af2e3db840a8a654bd55fb98fb0.zip Qt-58efa8aa5e845af2e3db840a8a654bd55fb98fb0.tar.gz Qt-58efa8aa5e845af2e3db840a8a654bd55fb98fb0.tar.bz2 |
Improve error handling.
Errors reported via:
* the DummyPlayer didn't work due to it not doing the usual state
transitions/emission
* MediaObject::setSource() due to errors being emitted
before connections being set up.
* A general state bug.
Task-number: QTBUG-4752
Reviewed-by: Gareth Stockwell
Diffstat (limited to 'src/3rdparty/phonon/mmf/mediaobject.cpp')
-rw-r--r-- | src/3rdparty/phonon/mmf/mediaobject.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/3rdparty/phonon/mmf/mediaobject.cpp b/src/3rdparty/phonon/mmf/mediaobject.cpp index 29ac2df..74aaa58 100644 --- a/src/3rdparty/phonon/mmf/mediaobject.cpp +++ b/src/3rdparty/phonon/mmf/mediaobject.cpp @@ -239,6 +239,7 @@ void MMF::MediaObject::createPlayer(const MediaSource &source) const bool oldPlayerSeekable = oldPlayer->isSeekable(); Phonon::ErrorType error = NoError; + QString errorMessage; // Determine media type switch (source.type()) { @@ -253,7 +254,7 @@ void MMF::MediaObject::createPlayer(const MediaSource &source) mediaType = fileMediaType(url.toLocalFile()); } else { - TRACE_0("Network streaming not supported yet"); + errorMessage = QLatin1String("Network streaming not supported yet"); error = NormalError; } } @@ -286,7 +287,8 @@ void MMF::MediaObject::createPlayer(const MediaSource &source) newPlayer = new DummyPlayer(); } - newPlayer->setError(NormalError); + error = NormalError; + errorMessage = tr("Media type could not be determined"); break; case MediaTypeAudio: @@ -321,9 +323,11 @@ void MMF::MediaObject::createPlayer(const MediaSource &source) connect(m_player.data(), SIGNAL(finished()), SIGNAL(finished())); connect(m_player.data(), SIGNAL(tick(qint64)), SIGNAL(tick(qint64))); - if (error != NoError ) { - newPlayer = new DummyPlayer(); - newPlayer->setError(error); + // We need to call setError() after doing the connects, otherwise the + // error won't be received. + if (error != NoError) { + Q_ASSERT(m_player); + m_player->setError(error, errorMessage); } TRACE_EXIT_0(); |