devsound/a3fdevsound/src/mmfdevsoundproxy/mmfdevsoundcallbackhandler.cpp
changeset 2 5c1df44f2eed
parent 0 b8ed18f6c07b
--- a/devsound/a3fdevsound/src/mmfdevsoundproxy/mmfdevsoundcallbackhandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsound/a3fdevsound/src/mmfdevsoundproxy/mmfdevsoundcallbackhandler.cpp	Wed Oct 13 12:45:32 2010 +0100
@@ -288,22 +288,20 @@
 	// the chunk has been closed by the server. No action should be taken.
 	TBool requestChunk = iDataBuffer==NULL; // if we have no buffer, tell server we need a chunk handle
 	TInt handle = iDevSoundProxy->BufferToBeFilledData(requestChunk, iSetPckg);
-	if(handle >= KErrNone)
+	User::LeaveIfError(handle);
+	
+	if ( iSetPckg().iChunkOp == EOpen )
 		{
-		if ( iSetPckg().iChunkOp == EOpen )
-			{
-			AssignDataBufferToChunkL(handle);
-			}
-		else
-			{
-			UpdateDataBufferL();
-			}
-		iDataBuffer->SetStatus(EAvailable);
-		
-		// Let the MMF fill the buffer with data
-		
-		iDevSoundObserver.BufferToBeFilled(iDataBuffer);
+		AssignDataBufferToChunkL(handle);
 		}
+	else
+		{
+		UpdateDataBufferL();
+		}
+	iDataBuffer->SetStatus(EAvailable);
+	
+	// Let the MMF fill the buffer with data
+	iDevSoundObserver.BufferToBeFilled(iDataBuffer);
 	SYMBIAN_DEBPRN0(_L("CMsgQueueHandler[0x%x]::DoBTBFCompleteL - Exit"));
 	}
 
@@ -320,16 +318,18 @@
 	// any error is assumed to be due to a pending RecordError(), so the error here is ignored - the RecordError() call will ensure the client remains lively
 	// the chunk has been closed by the server. No action should be taken.
 	TInt handle = iDevSoundProxy->BufferToBeEmptiedData(iSetPckg);
-	if(handle >= KErrNone)
+	User::LeaveIfError(handle);
+	
+	if ( iSetPckg().iChunkOp == EOpen )
 		{
-		if ( iSetPckg().iChunkOp == EOpen )
-			{
-			AssignDataBufferToChunkL(handle);
-			}
-		iDataBuffer->SetStatus(EFull);	
-		iDataBuffer->Data().SetLength(iSetPckg().iRequestSize);
-		iDevSoundObserver.BufferToBeEmptied(iDataBuffer);
+		AssignDataBufferToChunkL(handle);
 		}
+	
+	__ASSERT_ALWAYS(iDataBuffer, User::Leave(KErrGeneral)); //iDataBuffer should never be empty here
+	iDataBuffer->SetStatus(EFull);	
+	iDataBuffer->Data().SetLength(iSetPckg().iRequestSize);
+	iDevSoundObserver.BufferToBeEmptied(iDataBuffer);
+	
 	SYMBIAN_DEBPRN0(_L("CMsgQueueHandler[0x%x]::DoBTBECompleteL - Exit"));
 	}
 
@@ -416,7 +416,7 @@
 void CMsgQueueHandler::UpdateDataBufferL()
 	{
     SYMBIAN_DEBPRN0(_L("CMsgQueueHandler[0x%x]::UpdateDataBufferL - Enter"));
-    ASSERT(iDataBuffer); // to get here, we should have a data buffer
+    __ASSERT_ALWAYS(iDataBuffer, User::Leave(KErrGeneral)); // to get here, we should have a data buffer
 	iDataBuffer->SetPtr(iChunkDataPtr);
 	iDataBuffer->SetRequestSizeL(iSetPckg().iRequestSize);
 	iDataBuffer->SetLastBuffer(EFalse);