diff -r af3740e3753f -r c5b304f4d89b mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp --- a/mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp Wed Aug 18 09:46:20 2010 +0300 +++ b/mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp Thu Sep 02 20:24:03 2010 +0300 @@ -28,6 +28,7 @@ #include #include #include +#include #include "mpmpxplaybackframeworkwrapper_p.h" #include "mpmpxplaybackframeworkwrapper.h" @@ -36,6 +37,7 @@ #include "mptrace.h" #include "mpxaudioeffectengine.h" #include "mpsongdata.h" +#include "mpxcollectionpath.h" _LIT(KMPXPnRealAudioMimeType, "audio/x-pn-realaudio"); _LIT(KMPXRealAudioMimeType, "audio/x-realaudio"); @@ -456,6 +458,9 @@ if ( aError == KErrNone && aMessage ) { TRAP_IGNORE( DoHandlePlaybackMessageL(*aMessage) ); } + else{ + TRAP_IGNORE( DoHandlePlaybackErrorL(aError) ); + } TX_EXIT } @@ -726,6 +731,39 @@ /*! \internal */ +void MpMpxPlaybackFrameworkWrapperPrivate::DoHandlePlaybackErrorL( const TInt aError ) +{ + TX_ENTRY + switch ( aError ) { + case KErrCorrupt:{ + MMPXSource* source( iPlaybackUtility->Source() ); + if ( source ){ + CMPXCollectionPlaylist* playlist( source->PlaylistL() ); + if ( playlist ){ + MpPlaybackData* pData = playbackData(); + pData->setCorrupted( playlist->Path().IdOfIndex( playlist->Index() ).iId2 ); + + if ( playlist->Index() == ( playlist->Count()-1 ) ){ + //reach the end of list, pop up corrupt notification + emit q_ptr->corruptedStop(); + } + else{ + //corrupted song, skip to next song + skipForward(); + } + } + } + break; + } + default: + break; + } + TX_EXIT +} + +/*! + \internal + */ void MpMpxPlaybackFrameworkWrapperPrivate::ForceStopL() { TX_ENTRY