diff -r ed94e1e8390e -r 3cd404d31176 mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp --- a/mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp Fri Sep 17 08:28:52 2010 +0300 +++ b/mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp Mon Oct 04 00:14:19 2010 +0300 @@ -55,6 +55,7 @@ MpMpxPlaybackFrameworkWrapperPrivate::MpMpxPlaybackFrameworkWrapperPrivate( MpMpxPlaybackFrameworkWrapper *qq) : q_ptr(qq), iPlaybackUtility(0), + iEmbeddedPlaybackHelper(0), iPlaybackData(0), iDetailsRequest(false) { @@ -68,10 +69,10 @@ { TX_ENTRY if ( iPlaybackUtility ) { - TRAP_IGNORE( ForceStopL() ); TRAP_IGNORE( iPlaybackUtility->RemoveObserverL(*this) ); iPlaybackUtility->Close(); } + delete iEmbeddedPlaybackHelper; delete iPlaybackData; TX_EXIT } @@ -452,6 +453,19 @@ /*! \internal */ +void MpMpxPlaybackFrameworkWrapperPrivate::forceStop() +{ + TX_ENTRY + TRAPD( err, ForceStopL() ); + if ( err != KErrNone ) { + TX_LOG_ARGS("Error: " << err << "; should never get here."); + } + TX_EXIT +} + +/*! + \internal + */ void MpMpxPlaybackFrameworkWrapperPrivate::HandlePlaybackMessage( CMPXMessage *aMessage, TInt aError ) { TX_ENTRY_ARGS("aError=" << aError); @@ -609,10 +623,8 @@ aMedia.ValueTObjectL( KMPXMediaGeneralId ) ); } - if ( changed ) { - // This is required to propagate the playback info to UI at once. - iPlaybackData->commitPlaybackInfo(); - } + // This is required to propagate the playback info to UI at once. + iPlaybackData->commitPlaybackInfo( changed ); } TX_EXIT } @@ -620,6 +632,17 @@ /*! \internal */ +void MpMpxPlaybackFrameworkWrapperPrivate::HandleEmbeddedPlaybackError( TInt aError ) +{ + TX_ENTRY_ARGS( "aError=" << aError ); + Q_UNUSED( aError ); + emit q_ptr->corruptedStop( true ); + TX_EXIT +} + +/*! + \internal + */ void MpMpxPlaybackFrameworkWrapperPrivate::DoInitL() { TX_ENTRY @@ -639,10 +662,17 @@ */ void MpMpxPlaybackFrameworkWrapperPrivate::DoPlayL( QString aFilename ) { - TX_ENTRY - if ( !aFilename.isNull() ) { + TX_ENTRY_ARGS( "Filename: " << aFilename ); + if ( !aFilename.isEmpty() ) { const TDesC& playTitle = TPtrC(reinterpret_cast( aFilename.constData() )); - iPlaybackUtility->InitL( playTitle ); + if ( !iEmbeddedPlaybackHelper ) { + iEmbeddedPlaybackHelper = + CMpMpxEmbeddedPlaybackHelper::NewL( iHostUid, iPlaybackUtility, this ); + } + iEmbeddedPlaybackHelper->playL( playTitle ); + } + else { + HandleEmbeddedPlaybackError( KErrArgument ); } TX_EXIT } @@ -653,15 +683,7 @@ void MpMpxPlaybackFrameworkWrapperPrivate::DoPlayL( const XQSharableFile& file ) { TX_ENTRY - - RFile xqfile; - bool ok = file.getHandle( xqfile ); - if ( ok ) { - iPlaybackUtility->InitL( xqfile ); - } - else { - TX_LOG_ARGS("Error: " << ok << "; should never get here."); - } + DoPlayL( file.fileName() ); TX_EXIT }