devsound/a3fdevsound/src/devsoundadaptor/cdevaudio.cpp
changeset 15 c1e808730d6c
parent 0 40261b775718
child 23 545d349d14da
equal deleted inserted replaced
13:efebd1779a59 15:c1e808730d6c
   347 	DP_IN();
   347 	DP_IN();
   348 	TInt err(KErrNone);
   348 	TInt err(KErrNone);
   349 
   349 
   350 	if(iActiveState != EDevSoundAdaptorCreated_Uninitialised &&
   350 	if(iActiveState != EDevSoundAdaptorCreated_Uninitialised &&
   351 		iActiveState != EDevSoundAdaptorInitialised_Initialised && 
   351 		iActiveState != EDevSoundAdaptorInitialised_Initialised && 
   352 		iActiveState != EDevSoundAdaptorInitialised_Idle)
   352 		iActiveState != EDevSoundAdaptorInitialised_Idle &&
       
   353 		iActiveState != EDevSoundAdaptorUnitialised_Uninitialised )
   353 		{
   354 		{
   354 		DP0_RET(KErrNotReady, "%d");
   355 		DP0_RET(KErrNotReady, "%d");
   355 		}
   356 		}
   356 
   357 
   357 	// Reinitialization 
   358 	// Reinitialization 
   364 		if(iActiveState == EDevSoundAdaptorInitialised_Idle)
   365 		if(iActiveState == EDevSoundAdaptorInitialised_Idle)
   365 			{
   366 			{
   366 			err = iAudioStream->Unload();
   367 			err = iAudioStream->Unload();
   367 			if(err == KErrNone)
   368 			if(err == KErrNone)
   368 				{
   369 				{
       
   370 				err = CommitAudioContext();
       
   371 				}
       
   372 			if(err == KErrNone)
       
   373 				{
   369 				iActiveState = EDevSoundAdaptorUnloading;
   374 				iActiveState = EDevSoundAdaptorUnloading;
   370 				err = iAudioContext->Commit();
       
   371 				}
   375 				}
   372 			}
   376 			}
   373 		else
   377 		else
   374 			{
   378 			{
   375 			err = iCurrentAudioControl->Uninitialize();
   379 			err = iCurrentAudioControl->Uninitialize();
   376 			}
   380 			}
       
   381 		DP0_RET(err, "%d");
       
   382 		}
       
   383 
       
   384 	// Redo partial initialization after pre-emption clash event in
       
   385 	// EDevSoundAdaptorRemovingProcessingUnits state
       
   386 	if (iActiveState == EDevSoundAdaptorUnitialised_Uninitialised &&
       
   387 			iPreviousState == EDevSoundAdaptorRemovingProcessingUnits)
       
   388 		{
       
   389 		err = iCurrentAudioControl->RemoveProcessingUnits();
   377 		DP0_RET(err, "%d");
   390 		DP0_RET(err, "%d");
   378 		}
   391 		}
   379 
   392 
   380 	// Delete pUnits if already created
   393 	// Delete pUnits if already created
   381 	if (iAudioSource)
   394 	if (iAudioSource)
   483 	TInt err(KErrNone);
   496 	TInt err(KErrNone);
   484 
   497 
   485 	if(	iActiveState != EDevSoundAdaptorInitialised_Initialised)
   498 	if(	iActiveState != EDevSoundAdaptorInitialised_Initialised)
   486 		{
   499 		{
   487 		DP0_RET(KErrNotReady, "%d");
   500 		DP0_RET(KErrNotReady, "%d");
       
   501 		}
       
   502 
       
   503 	// Redo partial cancelling of initialization after pre-emption clash event in
       
   504 	// EDevSoundAdaptorRemovingProcessingUnits state.
       
   505 	if (iActiveState == EDevSoundAdaptorUnitialised_Uninitialised &&
       
   506 			iPreviousState == EDevSoundAdaptorRemovingProcessingUnits)
       
   507 		{
       
   508 		err = iCurrentAudioControl->RemoveProcessingUnits();
       
   509 		DP0_RET(err, "%d");
   488 		}
   510 		}
   489 			
   511 			
   490 	err = iCurrentAudioControl->Uninitialize();
   512 	err = iCurrentAudioControl->Uninitialize();
   491 	
   513 	
   492 	DP0_RET(err, "%d");
   514 	DP0_RET(err, "%d");
   572 	DP_CONTEXT(CDevAudio::ActiveState *CD1*, CtxDevSound, DPLOCAL);
   594 	DP_CONTEXT(CDevAudio::ActiveState *CD1*, CtxDevSound, DPLOCAL);
   573 	DP_IN();
   595 	DP_IN();
   574 	DP0_RET(iActiveState, "%d");
   596 	DP0_RET(iActiveState, "%d");
   575 	}
   597 	}
   576 
   598 
       
   599 // -----------------------------------------------------------------------------
       
   600 // CDevAudio::ActiveState
       
   601 // -----------------------------------------------------------------------------
       
   602 //
       
   603 TDevSoundAdaptorState CDevAudio::PreviousState() const
       
   604 	{
       
   605 	DP_CONTEXT(CDevAudio::PreviousState *CD1*, CtxDevSound, DPLOCAL);
       
   606 	DP_IN();
       
   607 	DP0_RET(iPreviousState, "%d");
       
   608 	}
       
   609 
       
   610 // -----------------------------------------------------------------------------
       
   611 // CDevAudio::SetActiveState
       
   612 // -----------------------------------------------------------------------------
       
   613 //
       
   614 void CDevAudio::SetActiveState(TDevSoundAdaptorState aAdaptorState)
       
   615 	{
       
   616 	DP_CONTEXT(CDevAudio::SetActiveState *CD1*, CtxDevSound, DPLOCAL);
       
   617 	DP_IN();
       
   618 	iActiveState = aAdaptorState;
       
   619 	DP_OUT();
       
   620 	}
       
   621 
       
   622 // -----------------------------------------------------------------------------
       
   623 // CDevAudio::SetPreviousState
       
   624 // -----------------------------------------------------------------------------
       
   625 //
       
   626 void CDevAudio::SetPreviousState(TDevSoundAdaptorState aAdaptorState)
       
   627 	{
       
   628 	DP_CONTEXT(CDevAudio::SetPreviousState *CD1*, CtxDevSound, DPLOCAL);
       
   629 	DP_IN();
       
   630 	iPreviousState = aAdaptorState;
       
   631 	DP_OUT();
       
   632 	}
   577 
   633 
   578 // -----------------------------------------------------------------------------
   634 // -----------------------------------------------------------------------------
   579 // CDevAudio::SetDevSoundVolume
   635 // CDevAudio::SetDevSoundVolume
   580 // -----------------------------------------------------------------------------
   636 // -----------------------------------------------------------------------------
   581 //
   637 //
   909 		iAudioCodec = NULL;
   965 		iAudioCodec = NULL;
   910 		}
   966 		}
   911 	DP_OUT();
   967 	DP_OUT();
   912 	}
   968 	}
   913 
   969 
       
   970 TInt CDevAudio::CommitAudioContext()
       
   971 	{
       
   972 	DP_CONTEXT(CDevAudio::CommitAudioContext *CD1*, CtxDevSound, DPLOCAL);
       
   973 	DP_IN();
       
   974 
       
   975 	//If we are in mid state then Panic as DevSound server-side session (CMMFDevSoundSession) is not blocking properly
       
   976 	__ASSERT_DEBUG(!IsMidState(iActiveState), Panic(EValidStateBeforeCommit));
       
   977 
       
   978 	TInt err = KErrNone;
       
   979 	iPreviousState = iActiveState;
       
   980 	err = iAudioContext->Commit();
       
   981 
       
   982 	DP0_RET(err,"%d");
       
   983 	}
       
   984 
       
   985 TBool CDevAudio::IsMidState(TDevSoundAdaptorState aAdaptorState)
       
   986 	{
       
   987 	DP_CONTEXT(CDevAudio::IsMidState *CD1*, CtxDevSound, DPLOCAL);
       
   988 	DP_IN();
       
   989 	if (aAdaptorState == EDevSoundAdaptorRemovingProcessingUnits || aAdaptorState == EDevSoundAdaptorUninitialising ||
       
   990 			aAdaptorState == EDevSoundAdaptorInitialising || aAdaptorState == EDevSoundAdaptorLoading ||
       
   991 			aAdaptorState == EDevSoundAdaptorUnloading || aAdaptorState == EDevSoundAdaptorStopping ||
       
   992 			aAdaptorState == EDevSoundAdaptorActivating || aAdaptorState == EDevSoundAdaptorPausing)
       
   993 		{
       
   994 		DP0_RET(ETrue,"%d");
       
   995 		}
       
   996 	DP0_RET(EFalse,"%d");
       
   997 	}
   914 
   998 
   915 // -----------------------------------------------------------------------------
   999 // -----------------------------------------------------------------------------
   916 // From MA3FDevSoundAutoPauseResume
  1000 // From MA3FDevSoundAutoPauseResume
   917 // CDevAudio::RegisterAsClient
  1001 // CDevAudio::RegisterAsClient
   918 // -----------------------------------------------------------------------------
  1002 // -----------------------------------------------------------------------------
   977 	DP_IN();
  1061 	DP_IN();
   978 	iAdaptationObserver.CallbackFromAdaptorReceived(KCallbackAutoPauseResume, KErrNone);
  1062 	iAdaptationObserver.CallbackFromAdaptorReceived(KCallbackAutoPauseResume, KErrNone);
   979 	DP_OUT();
  1063 	DP_OUT();
   980 	}
  1064 	}
   981 
  1065 
       
  1066 void CDevAudio::Panic(TMMFDevAudioPanicCodes aCode)
       
  1067 	{
       
  1068 	User::Panic(KMMFDevAudioPanicCategory, aCode);
       
  1069 	}
   982 
  1070 
   983 // End of file
  1071 // End of file