diff -r d881023c13eb -r cbb1bfb7ebfb mpx/playbackframework/playbackengine/src/mpxplaybackengine.cpp --- a/mpx/playbackframework/playbackengine/src/mpxplaybackengine.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mpx/playbackframework/playbackengine/src/mpxplaybackengine.cpp Fri May 14 16:21:14 2010 +0300 @@ -1478,6 +1478,23 @@ { iProperties[EPbPropertyPosition] = 0; } + + //check whether plugin is KMPXPlaybackPluginVersion2, if not, set saved position + CDesCArray* interfaces = iPluginHandler->SupportedInterfacesL( iPluginUid ); + TBool version2InterfaceSupported = EFalse; + if ( interfaces->MdcaCount() ) + { + TInt pos(0); + version2InterfaceSupported = !interfaces->FindIsq( KMPXPlaybackPluginVersion2, pos ); + } + delete interfaces; + + if ( !version2InterfaceSupported ) + { + // Set position to restore saved position. + TRAP_IGNORE( // uPnP leaves if set position in stop state + PluginL()->SetL( EPbPropertyPosition, iProperties[EPbPropertyPosition] )); + } iAutoResumeHandler->HandleOpenFileComplete(); @@ -1678,14 +1695,6 @@ iCallback->HandleProperty(aProperty,aValue,aError); iCallback = NULL; iTaskQueue->CompleteTask(); - - // notify client the new position during the playback - if ((EPbPropertyPosition == aProperty) && (iProgressTimer->IsActive())) - { - TRAP_IGNORE(iClientList->SendMsgL( - TMPXPlaybackMessage(TMPXPlaybackMessage::EPropertyChanged, - EPbPropertyPosition,aValue))); - } } MPX_DEBUG2("<--CMPXPlaybackEngine::HandleProperty 0x%08x", this); } @@ -2628,7 +2637,7 @@ MPX_DEBUG1("==>CMPXPlaybackEngine::DoStopL()"); Suspend(); if (iState == EPbStatePaused || iState == EPbStatePlaying || - iState == EPbStateInitialising) + iState == EPbStateInitialising || iState == EPbStateBuffering) { if (aSavePlaybackInfo && (iState == EPbStatePaused || iState == EPbStatePlaying )) {