diff -r d5f04de580b7 -r b74061f7f3d2 devsound/a3fdevsound/src/devsoundadaptor/cdevtonecontrol.cpp --- a/devsound/a3fdevsound/src/devsoundadaptor/cdevtonecontrol.cpp Wed Mar 31 23:56:23 2010 +0300 +++ b/devsound/a3fdevsound/src/devsoundadaptor/cdevtonecontrol.cpp Wed Apr 14 17:32:53 2010 +0300 @@ -156,7 +156,7 @@ err = iDevAudio->iAudioStream->Initialize(); if (err == KErrNone) { - err = iDevAudio->iAudioContext->Commit(); + err = iDevAudio->CommitAudioContext(); } if (err == KErrNone) { @@ -195,7 +195,7 @@ } if ( err == KErrNone) { - err = iDevAudio->iAudioContext->Commit(); + err = iDevAudio->CommitAudioContext(); } if(err == KErrNone) { @@ -204,8 +204,28 @@ } 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; + } DP0(DLINFO, "Already in loaded state"); err = iDevAudio->RequestGainAndBalance(this); if (err==KErrNone) @@ -214,13 +234,14 @@ } if (err == KErrNone) { - err = iDevAudio->iAudioContext->Commit(); + err = iDevAudio->CommitAudioContext(); } if (err == KErrNone) { iDevAudio->iActiveState = EDevSoundAdaptorActivating; } break; + } case EDevSoundAdaptorActive_Active: default: err = KErrNotReady; @@ -339,7 +360,7 @@ TInt err = iDevAudio->iAudioStream->Stop(); if ( err == KErrNone) { - err = iDevAudio->iAudioContext->Commit(); + err = iDevAudio->CommitAudioContext(); if(err == KErrNone) { iDevAudio->iActiveState = EDevSoundAdaptorStopping;