equal
deleted
inserted
replaced
177 // Remove pUnits only allowed when stream is uninitialized |
177 // Remove pUnits only allowed when stream is uninitialized |
178 TInt err = iDevAudio->iAudioStream->Uninitialize(); |
178 TInt err = iDevAudio->iAudioStream->Uninitialize(); |
179 |
179 |
180 if (err == KErrNone) |
180 if (err == KErrNone) |
181 { |
181 { |
|
182 err = iDevAudio->CommitAudioContext(); |
|
183 } |
|
184 if (err == KErrNone) |
|
185 { |
182 iDevAudio->iActiveState = EDevSoundAdaptorUninitialising; |
186 iDevAudio->iActiveState = EDevSoundAdaptorUninitialising; |
183 err = iDevAudio->iAudioContext->Commit(); |
|
184 } |
187 } |
185 |
188 |
186 DP0_RET(err,"%d"); |
189 DP0_RET(err,"%d"); |
187 } |
190 } |
188 |
191 |
196 DP_IN(); |
199 DP_IN(); |
197 |
200 |
198 TInt err = iDevAudio->iAudioStream->Unload(); |
201 TInt err = iDevAudio->iAudioStream->Unload(); |
199 if (err == KErrNone) |
202 if (err == KErrNone) |
200 { |
203 { |
201 err = iDevAudio->iAudioContext->Commit(); |
204 err = iDevAudio->CommitAudioContext(); |
202 } |
205 } |
203 if (err == KErrNone) |
206 if (err == KErrNone) |
204 { |
207 { |
205 iDevAudio->iActiveState = EDevSoundAdaptorUnloading; |
208 iDevAudio->iActiveState = EDevSoundAdaptorUnloading; |
206 } |
209 } |
330 err = iAudioCodecIf->SetMode(mode); |
333 err = iAudioCodecIf->SetMode(mode); |
331 } |
334 } |
332 |
335 |
333 if(err == KErrNone) |
336 if(err == KErrNone) |
334 { |
337 { |
335 err = iDevAudio->iAudioContext->Commit(); |
338 err = iDevAudio->CommitAudioContext(); |
336 if (err == KErrNone) |
339 if (err == KErrNone) |
337 { |
340 { |
338 iDesiredMode = mode; |
341 iDesiredMode = mode; |
339 } |
342 } |
340 } |
343 } |
487 // This call will result on commit only when we are already active |
490 // This call will result on commit only when we are already active |
488 // otherwise the changes will be commited by the DevAudioControl |
491 // otherwise the changes will be commited by the DevAudioControl |
489 // It means we're here due to RequestGainAndBalance call |
492 // It means we're here due to RequestGainAndBalance call |
490 if(err == KErrNone && !aBecomingActive) |
493 if(err == KErrNone && !aBecomingActive) |
491 { |
494 { |
492 err = iDevAudio->iAudioContext->Commit(); |
495 err = iDevAudio->CommitAudioContext(); |
493 } |
496 } |
494 } |
497 } |
495 DP0_RET(err,"%d"); |
498 DP0_RET(err,"%d"); |
496 } |
499 } |
497 |
500 |
544 case EDevSoundAdaptorPaused_Primed: |
547 case EDevSoundAdaptorPaused_Primed: |
545 { |
548 { |
546 err = iDevAudio->iAudioStream->Stop(); |
549 err = iDevAudio->iAudioStream->Stop(); |
547 if(err == KErrNone) |
550 if(err == KErrNone) |
548 { |
551 { |
549 err = iDevAudio->iAudioContext->Commit(); |
552 err = iDevAudio->CommitAudioContext(); |
550 } |
553 } |
551 if (err == KErrNone) |
554 if (err == KErrNone) |
552 { |
555 { |
553 iDevAudio->iActiveState = EDevSoundAdaptorStopping; |
556 iDevAudio->iActiveState = EDevSoundAdaptorStopping; |
554 } |
557 } |
557 case EDevSoundAdaptorInitialised_Idle: |
560 case EDevSoundAdaptorInitialised_Idle: |
558 { |
561 { |
559 err = iDevAudio->iAudioStream->Unload(); |
562 err = iDevAudio->iAudioStream->Unload(); |
560 if(err == KErrNone) |
563 if(err == KErrNone) |
561 { |
564 { |
562 err = iDevAudio->iAudioContext->Commit(); |
565 err = iDevAudio->CommitAudioContext(); |
563 } |
566 } |
564 if (err == KErrNone) |
567 if (err == KErrNone) |
565 { |
568 { |
566 iDevAudio->iActiveState = EDevSoundAdaptorUnloading; |
569 iDevAudio->iActiveState = EDevSoundAdaptorUnloading; |
567 } |
570 } |
570 case EDevSoundAdaptorInitialised_Initialised: |
573 case EDevSoundAdaptorInitialised_Initialised: |
571 { |
574 { |
572 err = iDevAudio->iAudioStream->Uninitialize(); |
575 err = iDevAudio->iAudioStream->Uninitialize(); |
573 if(err == KErrNone) |
576 if(err == KErrNone) |
574 { |
577 { |
575 err = iDevAudio->iAudioContext->Commit(); |
578 err = iDevAudio->CommitAudioContext(); |
576 } |
579 } |
577 if (err == KErrNone) |
580 if (err == KErrNone) |
578 { |
581 { |
579 iDevAudio->iActiveState = EDevSoundAdaptorUninitialising; |
582 iDevAudio->iActiveState = EDevSoundAdaptorUninitialising; |
580 } |
583 } |
581 } |
584 } |
582 break; |
585 break; |
583 case EDevSoundAdaptorCreated_Uninitialised: |
586 case EDevSoundAdaptorCreated_Uninitialised: |
584 readyToDestroy = ETrue; |
587 readyToDestroy = ETrue; |
|
588 break; |
|
589 case EDevSoundAdaptorUnitialised_Uninitialised: |
|
590 //If following condition is true, then we are here because of a |
|
591 //pre-emption clash in last Commit cycle started from |
|
592 //CDevCommonControl::ContextEventUpdateWithStateEventNoError. |
|
593 if(iDevAudio->iPreviousState == EDevSoundAdaptorRemovingProcessingUnits) |
|
594 { |
|
595 err = RemoveProcessingUnits(); |
|
596 break; |
|
597 } |
585 default: |
598 default: |
586 break; |
599 break; |
587 } |
600 } |
588 |
601 |
589 // Destroy sequence fail! |
602 // Destroy sequence fail! |
619 err = iDevAudio->iAudioStream->RemoveProcessingUnit(iDevAudio->iAudioCodec); |
632 err = iDevAudio->iAudioStream->RemoveProcessingUnit(iDevAudio->iAudioCodec); |
620 } |
633 } |
621 |
634 |
622 if (err == KErrNone) |
635 if (err == KErrNone) |
623 { |
636 { |
624 err = iDevAudio->iAudioContext->Commit(); |
637 err = iDevAudio->CommitAudioContext(); |
625 } |
638 } |
626 |
639 |
627 if(err == KErrNone) |
640 if(err == KErrNone) |
628 { |
641 { |
629 iDevAudio->iActiveState = EDevSoundAdaptorRemovingProcessingUnits; |
642 iDevAudio->iActiveState = EDevSoundAdaptorRemovingProcessingUnits; |
845 //Review if we call SetConfig or is only the first time that we load the codec |
858 //Review if we call SetConfig or is only the first time that we load the codec |
846 if (iDesiredSampleRate > 0) |
859 if (iDesiredSampleRate > 0) |
847 { |
860 { |
848 iCurrentSampleRate = iDesiredSampleRate; |
861 iCurrentSampleRate = iDesiredSampleRate; |
849 } |
862 } |
850 iDesiredSampleRate = 0; |
863 } |
851 } |
864 else |
|
865 { |
|
866 iAdaptationObserver->NotifyError(aError); |
|
867 } |
|
868 iDesiredSampleRate = 0; |
852 } |
869 } |
853 |
870 |
854 // ----------------------------------------------------------------------------- |
871 // ----------------------------------------------------------------------------- |
855 // From class MAudioCodecObserver |
872 // From class MAudioCodecObserver |
856 // CDevAudioControl::ModeSet |
873 // CDevAudioControl::ModeSet |
862 //Review if we call SetConfig or is only the first time that we load the codec |
879 //Review if we call SetConfig or is only the first time that we load the codec |
863 if (iDesiredMode != KNullUid) |
880 if (iDesiredMode != KNullUid) |
864 { |
881 { |
865 iCurrentMode = iDesiredMode; |
882 iCurrentMode = iDesiredMode; |
866 } |
883 } |
867 iDesiredMode = KNullUid; |
884 } |
868 } |
885 else |
|
886 { |
|
887 iAdaptationObserver->NotifyError(aError); |
|
888 } |
|
889 iDesiredMode = KNullUid; |
869 } |
890 } |
870 |
891 |
871 // ----------------------------------------------------------------------------- |
892 // ----------------------------------------------------------------------------- |
872 // From class MAudioCodecObserver |
893 // From class MAudioCodecObserver |
873 // CDevAudioControl::GetSupportedSampleRatesComplete |
894 // CDevAudioControl::GetSupportedSampleRatesComplete |
933 void CDevAudioControl::ContextEvent(TUid aEvent, TInt aError) |
954 void CDevAudioControl::ContextEvent(TUid aEvent, TInt aError) |
934 { |
955 { |
935 DP_CONTEXT(CDevAudioControl::ContextEvent *CD1*, CtxDevSound, DPLOCAL); |
956 DP_CONTEXT(CDevAudioControl::ContextEvent *CD1*, CtxDevSound, DPLOCAL); |
936 DP_IN(); |
957 DP_IN(); |
937 |
958 |
|
959 if(!(iAdaptationObserver->AdaptorControlsContext())) |
|
960 { |
|
961 iIgnoreAsyncOpComplete = ETrue; |
|
962 } |
|
963 |
938 if (aEvent == KUidA3FContextUpdateComplete) |
964 if (aEvent == KUidA3FContextUpdateComplete) |
939 { |
965 { |
940 if(iIgnoreAsyncOpComplete) |
966 if(iIgnoreAsyncOpComplete) |
941 { |
967 { |
942 iAdaptationObserver->PreemptionFinishedCallbackReceived(ETrue); |
968 iAdaptationObserver->PreemptionFinishedCallbackReceived(ETrue); |
945 else |
971 else |
946 { |
972 { |
947 iAdaptationObserver->AsynchronousOperationComplete(aError, ETrue); |
973 iAdaptationObserver->AsynchronousOperationComplete(aError, ETrue); |
948 } |
974 } |
949 } |
975 } |
950 else if(aEvent == KUidA3FContextPreEmption || aEvent == KUidA3FContextPreEmptedCommit) |
976 else if(aEvent == KUidA3FContextPreEmption) |
951 { |
977 { |
952 |
978 //If we are in a normal pre-emption cycle, we should not be in a mid-state. |
953 //Preemption during the below states should complete invoke AsynOperationComplete |
979 __ASSERT_DEBUG(!iDevAudio->IsMidState(iDevAudio->iActiveState), Panic(EInvalidStateDuringPreemptionCycle)); |
954 if(iDevAudio->iActiveState!=EDevSoundAdaptorActivating && iDevAudio->iActiveState!=EDevSoundAdaptorLoading && |
980 iIgnoreAsyncOpComplete = ETrue; |
955 iDevAudio->iActiveState!=EDevSoundAdaptorStopping && iDevAudio->iActiveState!=EDevSoundAdaptorUnloading |
981 iAdaptationObserver->PreemptionStartedCallbackReceived(); |
956 && iDevAudio->iActiveState!=EDevSoundAdaptorPausing) |
982 } |
957 { |
983 //In a clashing pre-emption cycle we must be in a commit cycle, so do nothing here - CDevCommonControl deals |
958 iIgnoreAsyncOpComplete = ETrue; |
984 //with this case. |
959 iAdaptationObserver->PreemptionStartedCallbackReceived(); |
|
960 } |
|
961 } |
|
962 DP_OUT(); |
985 DP_OUT(); |
963 } |
986 } |
964 |
987 |
965 |
988 |
966 // ----------------------------------------------------------------------------- |
989 // ----------------------------------------------------------------------------- |