diff -r efebd1779a59 -r c1e808730d6c devsound/a3fdevsound/src/devsoundadaptor/cdevplaycontrol.cpp --- a/devsound/a3fdevsound/src/devsoundadaptor/cdevplaycontrol.cpp Fri Apr 16 16:34:49 2010 +0300 +++ b/devsound/a3fdevsound/src/devsoundadaptor/cdevplaycontrol.cpp Mon May 03 13:56:28 2010 +0300 @@ -143,7 +143,7 @@ err = iDevAudio->iAudioStream->Initialize(); if (err == KErrNone) { - err = iDevAudio->iAudioContext->Commit(); + err = iDevAudio->CommitAudioContext(); if (err == KErrNone) { iDevAudio->iActiveState = EDevSoundAdaptorInitialising; @@ -195,7 +195,7 @@ } if ( err == KErrNone) { - err = iDevAudio->iAudioContext->Commit(); + err = iDevAudio->CommitAudioContext(); } if(err == KErrNone) { @@ -204,8 +204,29 @@ } break; + case EDevSoundAdaptorGoingActive: + { + //If following condition is false, then we are here because of a + //pre-emption clash in last Commit cycle started from + //CDevCommonControl::ContextEventUpdateWithStateEventNoError. + if(iDevAudio->iPreviousState != EDevSoundAdaptorActivating) + { + break; + } + //Fall through as required + } case EDevSoundAdaptorPaused_Primed: case EDevSoundAdaptorInitialised_Idle: + { + //If following condition is true, then we are here because of a + //pre-emption clash in last Commit cycle started from + //CDevCommonControl::ContextEventUpdateWithStateEventAndError. + if(iDevAudio->iPreviousState == EDevSoundAdaptorUnloading) + { + err = Unload(); + break; + } + err = iDevAudio->RequestGainAndBalance(this); if (err==KErrNone) { @@ -213,13 +234,14 @@ } if (err == KErrNone) { - err = iDevAudio->iAudioContext->Commit(); + err = iDevAudio->CommitAudioContext(); } if (err == KErrNone) { iDevAudio->iActiveState = EDevSoundAdaptorActivating; } break; + } case EDevSoundAdaptorActive_Active: // Deliberate fall through - set err=KErrNotReady for PlayInit when already active default: @@ -323,7 +345,7 @@ TInt err = iDevAudio->iAudioStream->Stop(); if ( err == KErrNone) { - err = iDevAudio->iAudioContext->Commit(); + err = iDevAudio->CommitAudioContext(); if(err == KErrNone) { iDevAudio->iActiveState = EDevSoundAdaptorStopping;