diff -r bc06d8566074 -r d5f04de580b7 devsound/a3fdevsound/src/mmfdevsoundserver/mmfdevsoundsession.cpp --- a/devsound/a3fdevsound/src/mmfdevsoundserver/mmfdevsoundsession.cpp Mon Mar 15 12:46:07 2010 +0200 +++ b/devsound/a3fdevsound/src/mmfdevsoundserver/mmfdevsoundsession.cpp Wed Mar 31 23:56:23 2010 +0300 @@ -229,6 +229,7 @@ { SYMBIAN_DEBPRN2(_L("\nCMMFDevSoundSession[0x%x] NEW REQUEST %02x while pending=%d"), aMessage.Function(), iOperationCompletePending || iAsyncQueueStart->IsActive()); + if( iOperationCompletePending || iAsyncQueueStart->IsActive()) { // if not possible to service now, then queue request @@ -259,9 +260,11 @@ iAsyncQueueStart->Cancel(); // just in case. TMMFMessageDestinationPckg destinationPckg; MmfMessageUtil::ReadL(aMessage, 0, destinationPckg); + SYMBIAN_DEBPRN2(_L("CMMFDevSoundSession[0x%x]::DoServiceRequestL - DestinationHandle [%d] InterfaceId [%d] "), destinationPckg().DestinationHandle(), destinationPckg().InterfaceId()); if ((destinationPckg().DestinationHandle() == KMMFObjectHandleDevSound) && (destinationPckg().InterfaceId() == KUidInterfaceMMFDevSound)) { + SYMBIAN_DEBPRN1(_L("CMMFDevSoundSession[0x%x]::DoServiceRequestL - Request [%d]"), aMessage.Function()); TBool complete = EFalse; switch(aMessage.Function()) { @@ -441,6 +444,7 @@ // Note: There are operations that not complete the message using the following flag // So if the message is not completed, cannot be assumed that there is an operation pending + SYMBIAN_DEBPRN1(_L("CMMFDevSoundSession[0x%x]::DoServiceRequestL - iOperationCompletePending [%d]"), iOperationCompletePending); if(iOperationCompletePending) { // Keep a copy of the message for Asynchronous requests & Pseudo-asynchronous @@ -453,7 +457,8 @@ TInt err = KErrNotSupported; if (iCIExtension) { - iOperationCompletePending = ETrue; + SYMBIAN_DEBPRN1(_L("CMMFDevSoundSession[0x%x]::DoServiceRequestL - CIExtensionRequest [%d]"), aMessage.Function()); + iOperationCompletePending = ETrue; iHandlingExtdCI = ETrue; TRAPD(err2, err = iCIExtension->HandleMessageL(aMessage)); if (err2) @@ -499,7 +504,8 @@ // TBool CMMFDevSoundSession::DoInitialize1L(const RMmfIpcMessage& aMessage) { - TInt err = iMsgQueue.Open(aMessage, 2); // a global queue. + iMsgQueue.Close(); // close if already open + TInt err = iMsgQueue.Open(aMessage, 2, EOwnerThread); // a global queue but owned by thread User::LeaveIfError(err); DoSetClientConfigL();// added here instead of the CreateL() TMMFDevSoundProxySettingsPckg devSoundBuf; @@ -520,7 +526,8 @@ // TBool CMMFDevSoundSession::DoInitialize2L(const RMmfIpcMessage& aMessage) { - TInt err = iMsgQueue.Open(aMessage, 2); // a global queue. + iMsgQueue.Close(); // close if already open + TInt err = iMsgQueue.Open(aMessage, 2, EOwnerThread); // a global queue but owned by thread User::LeaveIfError(err); DoSetClientConfigL();// added here instead of the CreateL() TMMFDevSoundProxySettingsPckg devSoundBuf; @@ -539,7 +546,8 @@ // TBool CMMFDevSoundSession::DoInitialize4L(const RMmfIpcMessage& aMessage) { - TInt err = iMsgQueue.Open(aMessage, 2); // a global queue. + iMsgQueue.Close(); + TInt err = iMsgQueue.Open(aMessage, 2, EOwnerThread); // a global queue but owned by thread User::LeaveIfError(err); DoSetClientConfigL();// added here instead of the CreateL() TMMFDevSoundProxySettingsPckg devSoundBuf; @@ -826,7 +834,8 @@ // TBool CMMFDevSoundSession::DoStopL(const RMmfIpcMessage& /*aMessage*/) { - // Sometimes Stop is not involved on a commit cycle + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoStopL - Enter")); + // Sometimes Stop is not involved on a commit cycle TBool completed = iAdapter->Stop(); if (completed) { @@ -835,6 +844,7 @@ iChunk.Close(); } iOperationCompletePending = !completed; + SYMBIAN_DEBPRN1(_L("CMMFDevSoundSession[0x%x]::DoStopL - Exit. Return value is [%d]"), completed); return completed; } @@ -855,12 +865,14 @@ // TBool CMMFDevSoundSession::DoPlayToneL(const RMmfIpcMessage& aMessage) { - TMMFDevSoundProxySettingsPckg devSoundBuf; + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoPlayToneL - Enter")); + TMMFDevSoundProxySettingsPckg devSoundBuf; aMessage.ReadL(TInt(1),devSoundBuf); TInt frequency = devSoundBuf().iFrequencyOne; TTimeIntervalMicroSeconds duration(devSoundBuf().iDuration); iAdapter->PlayToneL(frequency, duration); iOperationCompletePending = ETrue; + SYMBIAN_DEBPRN1(_L("CMMFDevSoundSession[0x%x]::DoPlayToneL - Exit. Return value is [%d]"), ETrue); return ETrue; } @@ -870,13 +882,15 @@ // TBool CMMFDevSoundSession::DoPlayDualToneL(const RMmfIpcMessage& aMessage) { - TMMFDevSoundProxySettingsPckg devSoundBuf; + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoPlayDualToneL - Enter")); + TMMFDevSoundProxySettingsPckg devSoundBuf; aMessage.ReadL(TInt(1),devSoundBuf); TInt frequencyOne = devSoundBuf().iFrequencyOne; TInt frequencyTwo = devSoundBuf().iFrequencyTwo; TTimeIntervalMicroSeconds duration(devSoundBuf().iDuration); iAdapter->PlayDualToneL(frequencyOne, frequencyTwo, duration); iOperationCompletePending = ETrue; + SYMBIAN_DEBPRN1(_L("CMMFDevSoundSession[0x%x]::DoPlayDualToneL - Exit. Return value is [%d]"), ETrue); return ETrue; } @@ -886,7 +900,8 @@ // TBool CMMFDevSoundSession::DoPlayDTMFStringL(const RMmfIpcMessage& aMessage) { - TInt dtmfLength = aMessage.GetDesLength(2); + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoPlayDTMFStringL - Enter")); + TInt dtmfLength = aMessage.GetDesLength(2); if(iDtmfString) { @@ -900,6 +915,7 @@ iAdapter->PlayDTMFStringL(*iDtmfString); iOperationCompletePending = ETrue; + SYMBIAN_DEBPRN1(_L("CMMFDevSoundSession[0x%x]::DoPlayDTMFStringL - Exit. Return value is [%d]"), ETrue); return ETrue; } @@ -909,7 +925,8 @@ // TBool CMMFDevSoundSession::DoPlayToneSequenceL(const RMmfIpcMessage& aMessage) { - TInt toneLength = aMessage.GetDesLength(1); + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoPlayToneSequenceL - Enter")); + TInt toneLength = aMessage.GetDesLength(1); if(iToneSeqBuf) { @@ -923,6 +940,7 @@ iAdapter->PlayToneSequenceL(*iToneSeqBuf); iOperationCompletePending = ETrue; + SYMBIAN_DEBPRN1(_L("CMMFDevSoundSession[0x%x]::DoPlayToneSequenceL - Exit. Return value is [%d]"), ETrue); return ETrue; } @@ -932,12 +950,14 @@ // TBool CMMFDevSoundSession::DoPlayFixedSequenceL(const RMmfIpcMessage& aMessage) { - TPckgBuf buf; + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoPlayFixedSequenceL - Enter")); + TPckgBuf buf; aMessage.ReadL(TInt(1),buf); TInt seqNum = buf(); iAdapter->PlayFixedSequenceL(seqNum); iOperationCompletePending = ETrue; + SYMBIAN_DEBPRN1(_L("CMMFDevSoundSession[0x%x]::DoPlayFixedSequenceL - Exit. Return value is [%d]"), ETrue); return ETrue; } @@ -947,12 +967,14 @@ // TBool CMMFDevSoundSession::DoSetDTMFLengthsL(const RMmfIpcMessage& aMessage) { - TMMFDevSoundProxySettingsPckg devSoundBuf; + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoSetDTMFLengthsL - Enter")); + TMMFDevSoundProxySettingsPckg devSoundBuf; aMessage.ReadL(TInt(1),devSoundBuf); TTimeIntervalMicroSeconds32 toneOnLength = devSoundBuf().iToneOnLength; TTimeIntervalMicroSeconds32 toneOffLength = devSoundBuf().iToneOffLength; TTimeIntervalMicroSeconds32 pauseLength = devSoundBuf().iPauseLength; User::LeaveIfError(iAdapter->SetDTMFLengths(toneOnLength, toneOffLength, pauseLength)); + SYMBIAN_DEBPRN1(_L("CMMFDevSoundSession[0x%x]::DoSetDTMFLengthsL - Exit. Return value is [%d]"), ETrue); return ETrue; } @@ -962,11 +984,13 @@ // TBool CMMFDevSoundSession::DoSetVolumeRampL(const RMmfIpcMessage& aMessage) { - TMMFDevSoundProxySettingsPckg devSoundBuf; + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoSetVolumeRampL - Enter")); + TMMFDevSoundProxySettingsPckg devSoundBuf; aMessage.ReadL(TInt(1),devSoundBuf); TTimeIntervalMicroSeconds duration = devSoundBuf().iDuration; User::LeaveIfError(iAdapter->SetVolumeRamp(duration)); iOperationCompletePending = EFalse; // Volume ramp doesn't result on commit + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoSetVolumeRampL - Exit")); return ETrue; // operation complete } @@ -1044,13 +1068,14 @@ // TBool CMMFDevSoundSession::DoSetToneRepeatsL(const RMmfIpcMessage& aMessage) { - TPckgBuf countRepeat; + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoSetToneRepeatsL - Enter")); + TPckgBuf countRepeat; aMessage.ReadL(TInt(1),countRepeat); TPckgBuf repeatTS; aMessage.ReadL(TInt(2),repeatTS); User::LeaveIfError(iAdapter->SetToneRepeats(countRepeat(), repeatTS())); - + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoSetToneRepeatsL - Exit")); return ETrue; } @@ -1076,11 +1101,13 @@ TBool CMMFDevSoundSession::DoFixedSequenceCountL( const RMmfIpcMessage& aMessage) { - TPckgBuf fixSeqCountPckg; + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoFixedSequenceCountL - Enter")); + TPckgBuf fixSeqCountPckg; TInt fixSeqCount = iAdapter->FixedSequenceCount(); fixSeqCountPckg = fixSeqCount; aMessage.WriteL(TInt(2),fixSeqCountPckg); + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoFixedSequenceCountL - Exit")); return ETrue; } @@ -1339,7 +1366,8 @@ // void CMMFDevSoundSession::FlushEventQueue() { - if(iMsgQueue.Handle() != 0) + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::FlushEventQueue - Enter")); + if(iMsgQueue.Handle() != 0) { TMMFDevSoundQueueItem queueItem; TInt err = KErrNone; @@ -1347,12 +1375,14 @@ { err = iMsgQueue.Receive(queueItem); } - } + } + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::FlushEventQueue - Exit")); } void CMMFDevSoundSession::FilterQueueEvent(TMMFDevSoundProxyRequest aRequest) { - if(iMsgQueue.Handle() != 0) + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::FilterQueueEvent - Enter")); + if(iMsgQueue.Handle() != 0) { // Pop and push events result at the queue // can be seen as "circular list" @@ -1380,6 +1410,7 @@ } } } + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::FilterQueueEvent - Exit")); } // @@ -1388,7 +1419,8 @@ // void CMMFDevSoundSession::Disconnect(const RMessage2& aMessage) { - TBool complete = iAdapter->CloseDevSound(); + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::Disconnect - Enter")); + TBool complete = iAdapter->CloseDevSound(); if(!complete) { iRequestBeingServiced.SetMessage(aMessage); @@ -1396,6 +1428,7 @@ iClosingWait->Start(); } CSession2::Disconnect(aMessage); + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::Disconnect - Exit")); } @@ -1507,11 +1540,13 @@ // void CMMFDevSoundSession::ToneFinished(TInt aError) { - TMMFDevSoundQueueItem item; + SYMBIAN_DEBPRN1(_L("CMMFDevSoundSession[0x%x]::ToneFinished - Enter. Error [%d]"), aError); + TMMFDevSoundQueueItem item; item.iRequest = EMMFDevSoundProxyTFEvent; item.iErrorCode = aError; // assumes sufficient space in the queue so ignores the return value iMsgQueue.Send(item); + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::ToneFinished - Exit")); } // @@ -1553,7 +1588,7 @@ // void CMMFDevSoundSession::PlayError(TInt aError) { - SYMBIAN_DEBPRN1(_L("CMMFDevSoundSession[0x%x]::PlayError [%d]"), aError); + SYMBIAN_DEBPRN1(_L("CMMFDevSoundSession[0x%x]::PlayError - Enter [%d]"), aError); // Set play error flag to ignore following PlayData requests iPlayErrorOccured = ETrue; @@ -1564,6 +1599,7 @@ iChunk.Close(); // assumes sufficient space in the queue so ignores the return value iMsgQueue.Send(item); + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::PlayError - Exit")); } // @@ -1647,7 +1683,7 @@ // void CMMFDevSoundSession::CallbackFromAdaptorReceived(TInt aType, TInt aError) { - + SYMBIAN_DEBPRN2(_L("CMMFDevSoundSession[0x%x]::CallbackFromAdaptorReceived - Enter. Type [%d ]Error [%d]"), aType, aError); if(aType == KCallbackRecordPauseComplete) { TMMFDevSoundQueueItem item; @@ -1692,6 +1728,7 @@ } } } + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::CallbackFromAdaptorReceived - Exit")); } @@ -1701,8 +1738,10 @@ // void CMMFDevSoundSession::PreemptionStartedCallbackReceived() { - // Solution: Enqueue any request that arrives before preemption is completed + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::PreemptionStartedCallbackReceived - Enter")); + // Solution: Enqueue any request that arrives before preemption is completed iOperationCompletePending = ETrue; + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::PreemptionStartedCallbackReceived - Exit")); } // @@ -1711,16 +1750,19 @@ // void CMMFDevSoundSession::PreemptionFinishedCallbackReceived(TBool aCanStartNewOperation) { + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::PreemptionFinishedCallbackReceived - Enter")); if (iHandlingExtdCI) { // we are in the middle of handling a CI, so ignore - will handle later when unwinding - return; + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::PreemptionFinishedCallbackReceived - Exit. Exiting from if block for CI")); + return; } iOperationCompletePending = EFalse; if ( aCanStartNewOperation && iQueuedRequests.Count() != 0 ) { DequeueRequest(); } + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::PreemptionFinishedCallbackReceived - Exit")); } // @@ -1754,13 +1796,15 @@ // void CMMFDevSoundSession::SendEventToClient(const TMMFEvent& aEvent) { - TMMFDevSoundQueueItem item; + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::SendEventToClient - Enter")); + TMMFDevSoundQueueItem item; item.iRequest = EMMFDevSoundProxySETCEvent; item.iErrorCode = KErrNone; item.iEventPckg() = aEvent; // assumes sufficient space in the queue so ignores the return value TInt err = iMsgQueue.Send(item); - __ASSERT_DEBUG(err == KErrNone, Panic(EMsgQueueFailedToSendMsg)); + __ASSERT_DEBUG(err == KErrNone, Panic(EMsgQueueFailedToSendMsg)); + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::SendEventToClient - Exit")); } void CMMFDevSoundSession::AsynchronousOperationComplete(TInt aError, TBool aCanStartNewOperation) @@ -1848,6 +1892,7 @@ void CMMFDevSoundSession::DequeueRequest() { + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DequeueRequest - Enter")); iAsyncQueueStart->Cancel(); // if we're in here cancel any background request TMMFDevSoundRequest msg = iQueuedRequests[0]; @@ -1876,6 +1921,7 @@ SYMBIAN_DEBPRN0(_L("\n CMMFDevSoundSession[0x%x]======== Flag can service new request\n")); iAsyncQueueStart->CallBack(); } + SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DequeueRequest - Exit")); } // AsyncQueueStartCallback @@ -2025,7 +2071,7 @@ // Request kernel to create global RChunk if needed if ( !iChunk.Handle() ) { - status = iChunk.CreateGlobal(KNullDesC, aRequestedSize, aRequestedSize); + status = iChunk.CreateGlobal(KNullDesC, aRequestedSize, aRequestedSize, EOwnerThread); if ( status == KErrNone ) { aBufPckg().iChunkOp = EOpen; @@ -2273,7 +2319,7 @@ void CMMFDevSoundSession::Panic(TMMFDevSoundSessionPanicCodes aCode) { - User::Panic(KMMFDevSoundSessionPanicCategory, aCode); + User::Panic(KMMFDevSoundSessionPanicCategory, aCode); } void CMMFDevSoundSession::BufferErrorEvent()