phoneengine/callhandling/src/cpecallhandling.cpp
changeset 76 cfea66083b62
parent 74 d1c62c765e48
--- 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,