--- 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;