src/3rdparty/phonon/mmf/mediaobject.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
child 7 f7bc934e204c
--- a/src/3rdparty/phonon/mmf/mediaobject.cpp	Tue Jan 26 12:42:25 2010 +0200
+++ b/src/3rdparty/phonon/mmf/mediaobject.cpp	Tue Feb 02 00:43:10 2010 +0200
@@ -239,6 +239,7 @@
     const bool oldPlayerSeekable = oldPlayer->isSeekable();
 
     Phonon::ErrorType error = NoError;
+    QString errorMessage;
 
     // Determine media type
     switch (source.type()) {
@@ -253,7 +254,7 @@
                 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 @@
             newPlayer = new DummyPlayer();
         }
 
-        newPlayer->setError(NormalError);
+        error = NormalError;
+        errorMessage = tr("Media type could not be determined");
         break;
 
     case MediaTypeAudio:
@@ -317,13 +319,16 @@
     }
 
     connect(m_player.data(), SIGNAL(totalTimeChanged(qint64)), SIGNAL(totalTimeChanged(qint64)));
-    connect(m_player.data(), SIGNAL(stateChanged(Phonon::State, Phonon::State)), SIGNAL(stateChanged(Phonon::State, Phonon::State)));
+    connect(m_player.data(), SIGNAL(stateChanged(Phonon::State,Phonon::State)), SIGNAL(stateChanged(Phonon::State,Phonon::State)));
     connect(m_player.data(), SIGNAL(finished()), SIGNAL(finished()));
     connect(m_player.data(), SIGNAL(tick(qint64)), SIGNAL(tick(qint64)));
+    connect(m_player.data(), SIGNAL(metaDataChanged(QMultiMap<QString,QString>)), SIGNAL(metaDataChanged(QMultiMap<QString,QString>)));
 
-    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();
@@ -354,11 +359,6 @@
     m_player->setTransitionTime(time);
 }
 
-
-//-----------------------------------------------------------------------------
-// VolumeObserver
-//-----------------------------------------------------------------------------
-
 void MMF::MediaObject::volumeChanged(qreal volume)
 {
     m_player->volumeChanged(volume);