devsound/a3fdevsound/src/mmfdevsoundserver/mmfdevsoundsession.cpp
branchRCL_3
changeset 11 d5f04de580b7
parent 8 bc06d8566074
child 12 b74061f7f3d2
--- 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<TInt> buf;
+    SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoPlayFixedSequenceL - Enter"));
+    TPckgBuf<TInt> 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<TInt> countRepeat;
+    SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoSetToneRepeatsL - Enter"));
+    TPckgBuf<TInt> countRepeat;
 	aMessage.ReadL(TInt(1),countRepeat);
 
 	TPckgBuf<TTimeIntervalMicroSeconds> 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<TInt> fixSeqCountPckg;
+    SYMBIAN_DEBPRN0(_L("CMMFDevSoundSession[0x%x]::DoFixedSequenceCountL - Enter"));
+    TPckgBuf<TInt> 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()