diff -r d1c62c765e48 -r cfea66083b62 phoneengine/callhandling/src/cpecallhandling.cpp --- a/phoneengine/callhandling/src/cpecallhandling.cpp Fri Sep 17 17:09:12 2010 +0300 +++ b/phoneengine/callhandling/src/cpecallhandling.cpp Mon Oct 04 16:06:10 2010 +0300 @@ -96,7 +96,7 @@ iConvergedCallEngine( aConvergedCallEngine ), iDtmfInterface( aDtmfInterface ), iReplaceActive( EFalse ), - iDialRequest( EFalse ) + iDialRequestCallId( KErrNotFound ) { TEFLOGSTRING( KTAOBJECT, "CALL CPECallHandling::CPECallHandling()"); } @@ -240,7 +240,7 @@ if( callData->GetCallState() == EPEStateIdle ) { ReleaseCallObject( aCallId ); - iDialRequest = EFalse; + iDialRequestCallId = KErrNotFound; } } } @@ -289,7 +289,7 @@ { case MEngineMonitor::EPEMessageDialing: { - iDialRequest = EFalse; + iDialRequestCallId = KErrNotFound; CPESingleCall* callData = iCallArrayOwner->GetCallObject( aCallId ); if( callData ) { @@ -312,6 +312,11 @@ } case MEngineMonitor::EPEMessageIdle: { + // If Idle is received to pending dial request, clear request + if ( aCallId == iDialRequestCallId ) + { + iDialRequestCallId = KErrNotFound; + } HandleAutoResume(); break; } @@ -642,7 +647,7 @@ // If there is allready video call, one dial in connecting, dialing or disconnecting state, // we just ignore new dial request and send KErrInUse back to UI - if( iDialRequest ) + if( iDialRequestCallId != KErrNotFound ) { // Dial request already send, waiting for dialing state. errorCode = KErrGeneral; @@ -670,12 +675,12 @@ } TEFLOGSTRING( KTAINT, "CALL CPECallHandling::DialCall > Dial" ); - iDialRequest = ETrue; + iDialRequestCallId = aCallId; errorCode = callData->Dial( aNumber ); if ( errorCode != KErrNone ) { - iDialRequest = EFalse; + iDialRequestCallId = KErrNotFound; // Dial failed: clean up ReleaseCallObject( callData->GetCallId() ); TEFLOGSTRING2( KTAERROR,