static QByteArray debugMediaObject(WebCore::MediaPlayerPrivate* mediaPlayer, const MediaObject& mediaObject) { QByteArray byteArray; QTextStream stream(&byteArray); const QMetaObject* metaObj = mediaPlayer->metaObject(); QMetaEnum phononStates = metaObj->enumerator(metaObj->indexOfEnumerator("PhononState")); stream << "debugMediaObject -> Phonon::MediaObject("; stream << "State: " << phononStates.valueToKey(mediaObject.state()); stream << " | Current time: " << mediaObject.currentTime(); stream << " | Remaining time: " << mediaObject.remainingTime(); stream << " | Total time: " << mediaObject.totalTime(); stream << " | Meta-data: "; QMultiMap<QString, QString> map = mediaObject.metaData(); for (QMap<QString, QString>::const_iterator it = map.constBegin(); it != map.constEnd(); ++it) { stream << "(" << it.key() << ", " << it.value() << ")"; } stream << " | Has video: " << mediaObject.hasVideo(); stream << " | Is seekable: " << mediaObject.isSeekable(); stream << ")"; stream.flush(); return byteArray; }
bool Backend::endConnectionChange(QSet<QObject *> objects) { //end of a transaction for(QSet<QObject *>::const_iterator it = objects.begin(); it != objects.end(); ++it) { if (BackendNode *node = qobject_cast<BackendNode*>(*it)) { MediaObject *mo = node->mediaObject(); if (mo) { switch(mo->transactionState) { case Phonon::ErrorState: case Phonon::StoppedState: case Phonon::LoadingState: //nothing to do break; case Phonon::PausedState: mo->transactionState = Phonon::StoppedState; mo->pause(); break; default: mo->transactionState = Phonon::StoppedState; mo->play(); break; } if (mo->state() == Phonon::ErrorState) return false; } } } return true; }