devsound/a3fdevsound/src/devsoundadaptor/cdevaudio.cpp
changeset 29 eb1e5d7cc688
parent 15 c1e808730d6c
equal deleted inserted replaced
26:c36d67f77f75 29:eb1e5d7cc688
    26 #include <a3f/devsoundadaptationinfo.h>
    26 #include <a3f/devsoundadaptationinfo.h>
    27 #include <a3f/a3ffourcclookup.h>
    27 #include <a3f/a3ffourcclookup.h>
    28 #include <a3f/audiocontextfactory.h>
    28 #include <a3f/audiocontextfactory.h>
    29 #include <a3f/maudioprocessingunit.h>
    29 #include <a3f/maudioprocessingunit.h>
    30 #include <a3f/maudiocontext.h>
    30 #include <a3f/maudiocontext.h>
       
    31 #include <a3f/mcontexteffectiveclient.h>
    31 #include <a3f/maudiostream.h>
    32 #include <a3f/maudiostream.h>
    32 #include <a3f/maudiocodec.h>
    33 #include <a3f/maudiocodec.h>
    33 #include <a3f/maudiogaincontrol.h>
    34 #include <a3f/maudiogaincontrol.h>
    34 #include <a3f/mbuffersource.h>
    35 #include <a3f/mbuffersource.h>
    35 #include <a3f/mbuffersink.h>
    36 #include <a3f/mbuffersink.h>
   493 	{
   494 	{
   494 	DP_CONTEXT(CDevAudio::CancelInitialize *CD1*, CtxDevSound, DPLOCAL);
   495 	DP_CONTEXT(CDevAudio::CancelInitialize *CD1*, CtxDevSound, DPLOCAL);
   495 	DP_IN();
   496 	DP_IN();
   496 	TInt err(KErrNone);
   497 	TInt err(KErrNone);
   497 
   498 
   498 	if(	iActiveState != EDevSoundAdaptorInitialised_Initialised)
       
   499 		{
       
   500 		DP0_RET(KErrNotReady, "%d");
       
   501 		}
       
   502 
       
   503 	// Redo partial cancelling of initialization after pre-emption clash event in
   499 	// Redo partial cancelling of initialization after pre-emption clash event in
   504 	// EDevSoundAdaptorRemovingProcessingUnits state.
   500 	// EDevSoundAdaptorRemovingProcessingUnits state.
   505 	if (iActiveState == EDevSoundAdaptorUnitialised_Uninitialised &&
   501 	if (iActiveState == EDevSoundAdaptorUnitialised_Uninitialised &&
   506 			iPreviousState == EDevSoundAdaptorRemovingProcessingUnits)
   502 			iPreviousState == EDevSoundAdaptorRemovingProcessingUnits)
   507 		{
   503 		{
   508 		err = iCurrentAudioControl->RemoveProcessingUnits();
   504 		err = iCurrentAudioControl->RemoveProcessingUnits();
   509 		DP0_RET(err, "%d");
   505 		DP0_RET(err, "%d");
   510 		}
   506 		}
   511 			
   507 	else if(iActiveState != EDevSoundAdaptorInitialised_Initialised)
       
   508 		{
       
   509 		DP0_RET(KErrNotReady, "%d");
       
   510 		}
       
   511 
   512 	err = iCurrentAudioControl->Uninitialize();
   512 	err = iCurrentAudioControl->Uninitialize();
   513 	
   513 	
   514 	DP0_RET(err, "%d");
   514 	DP0_RET(err, "%d");
   515 	}
   515 	}
   516 
   516 
   555 //
   555 //
   556 TBool CDevAudio::IsPrioritySet()
   556 TBool CDevAudio::IsPrioritySet()
   557 	{
   557 	{
   558 	return iPriorityFlag;
   558 	return iPriorityFlag;
   559 	}
   559 	}
       
   560 
   560 // -----------------------------------------------------------------------------
   561 // -----------------------------------------------------------------------------
   561 // CDevAudio::SetClientConfig
   562 // CDevAudio::SetClientConfig
   562 // -----------------------------------------------------------------------------
   563 // -----------------------------------------------------------------------------
   563 //
   564 //
   564 TInt CDevAudio::SetClientConfig(const TMMFClientConfig& aClientConfig)
   565 TInt CDevAudio::SetClientConfig(const TProcessId& aProcessId)
   565 	{
   566 	{
   566 	DP_CONTEXT(CDevAudio::SetClientConfig *CD1*, CtxDevSound, DPLOCAL);
   567 	DP_CONTEXT(CDevAudio::SetClientConfig *CD1*, CtxDevSound, DPLOCAL);
   567 	DP_IN();
   568 	DP_IN();
   568 	// TODO: Check if the TClientContextSettings atributte go back since 
   569 	// TODO: Check if the TClientContextSettings atributte go back since 
   569 	// if not there is no way to send the vendor id
   570 	// if not there is no way to send the vendor id
   570 	TClientContextSettings context;
   571 	TClientContextSettings context;
   571 	context.iProcessId = aClientConfig.iProcessId;
   572 	context.iProcessId = aProcessId;
   572 	TInt err = iAudioContext->SetClientSettings(context);
   573 	TInt err = iAudioContext->SetClientSettings(context);
   573 	if (err != KErrNone)
   574 	if (err != KErrNone)
   574 		{
   575 		{
   575 		DP1(DLERR, "Error %d setting client context!",err);
   576 		DP1(DLERR, "Error %d setting client context!",err);
   576 		}
   577 		}
       
   578 	DP0_RET(err, "%d");
       
   579 	}
       
   580 
       
   581 TInt CDevAudio::SetClientConfig(const TProcessId& aActualProcessId, const TProcessId& aProcessId)
       
   582 	{
       
   583 	DP_CONTEXT(CDevAudio::SetClientConfig *CD1*, CtxDevSound, DPLOCAL);
       
   584 	DP_IN();
       
   585 	
       
   586 	MContextSetEffectiveClient* setEffectiveClient
       
   587         = static_cast<MContextSetEffectiveClient*>(iAudioContext->Interface(KSetClientInfoUid));
       
   588 	
       
   589 	TInt err;
       
   590 	
       
   591 	if (!setEffectiveClient)
       
   592 	    {
       
   593         DP0(DLINFO, "MContextSetEffectiveClient not supported, revert to old behaviour of just passing actual client info");
       
   594         err = SetClientConfig(aActualProcessId);
       
   595 	    }
       
   596 	else
       
   597 	    {
       
   598         TClientContextSettings context;
       
   599         context.iProcessId = aProcessId;
       
   600         err = iAudioContext->SetClientSettings(context);
       
   601         if (err != KErrNone)
       
   602             {
       
   603             DP1(DLERR, "Error %d setting client context!",err);
       
   604             }
       
   605         if (!err)
       
   606             {
       
   607             err = setEffectiveClient->SetEffectiveClientInfo(aActualProcessId);
       
   608             if (err != KErrNone)
       
   609                 {
       
   610                 DP1(DLERR, "Error %d setting effective client context!",err);
       
   611                 }
       
   612             }
       
   613 	    }
       
   614 
   577 	DP0_RET(err, "%d");
   615 	DP0_RET(err, "%d");
   578 	}
   616 	}
   579 
   617 
   580 
   618 
   581 void CDevAudio::ContextEvent(TUid /*aEvent*/, TInt /*aError*/)
   619 void CDevAudio::ContextEvent(TUid /*aEvent*/, TInt /*aError*/)