diff -r 5a06f39ad45b -r 80975da52420 mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Src/AdvancedAudioPlayController.cpp --- a/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Src/AdvancedAudioPlayController.cpp Fri Apr 16 15:29:42 2010 +0300 +++ b/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Src/AdvancedAudioPlayController.cpp Mon May 03 12:59:52 2010 +0300 @@ -801,6 +801,7 @@ User::Leave(KErrAlreadyExists); } + // set iReadHeader here in case prime is not called before set position is used. // reset before adding data source DP0(_L("CAdvancedAudioPlayController::AddDataSourceL reseting iSharedBufferCnt iReadHeader iInitPosition position vars")); @@ -1654,7 +1655,7 @@ TTimeIntervalMicroSeconds positionMicroSeconds(0); - if (iState == EPlaying) + if (iState == EPlaying || iState == EAutoPaused) { DP1 (_L("CAdvancedAudioPlayController::PositionL iTimePositionInMicroSecs [%d] msec"), iTimePositionInMicroSecs); // adjust the position here since devsound returns the incremented postion value during loopplay @@ -2218,8 +2219,12 @@ DP0(_L("CAdvancedAudioPlayController::DoInitializeSinkL")); iSinkInitDataReady = EFalse; + if (!iAudioOutput) + { + User::Leave(KErrNotReady); + } //both source and sink have been added - if(iAudioOutput && iDataSourceAdapter) + if(iDataSourceAdapter) { iAudioOutput->SetDataSourceAdapter(iDataSourceAdapter); } @@ -2247,20 +2252,15 @@ // Read the default codec configuration parameters from resource file RArray& codecConfigData = const_cast&>(iAudioResource->CodecConfigParametersL()); // Override default values with values found from header, if available - GetCodecConfigData(codecConfigData); - if (!iAudioOutput) - { - User::Leave(KErrNotReady); - } - else - { - iAudioOutput->ConfigureL(iSampleRate, iSinkNumChannels, iDataType, codecConfigData); - DP0(_L("CAdvancedAudioPlayController::DoInitializeSinkL, output configured")); - iAudioOutput->PrimeL(); - DP0(_L("CAdvancedAudioPlayController::DoInitializeSinkL, output primed")); - } - // we would use this code when we have a NULL sink -/* if (iDuration > 0) + GetCodecConfigData(codecConfigData); + iAudioOutput->ConfigureL(iSampleRate, iSinkNumChannels, iDataType, codecConfigData); + DP0(_L("CAdvancedAudioPlayController::DoInitializeSinkL, output configured")); + iAudioOutput->PrimeL(); + DP0(_L("CAdvancedAudioPlayController::DoInitializeSinkL, output primed")); + + // we would use this code when we have a NULL sink + + /* if (iDuration > 0) { DP0(_L("CAdvancedAudioPlayController::BufferFilledL, unblocking duration")); iBlockDuration = EFalse;