camerauis/cameraapp/generic/src/CamAppController.cpp
branchRCL_3
changeset 12 51dda465e618
parent 11 d486e5e3cc9a
child 13 38fb6f7eacd5
--- a/camerauis/cameraapp/generic/src/CamAppController.cpp	Wed Mar 31 21:06:44 2010 +0300
+++ b/camerauis/cameraapp/generic/src/CamAppController.cpp	Wed Apr 14 15:41:04 2010 +0300
@@ -2816,8 +2816,14 @@
         appUi->SetAssumePostCaptureView( EFalse ); 
         } 
       }
-
-    if ( Busy() )
+      
+    TBool cancelingAutoFocus = ( ECamControllerImage == CurrentMode() && 
+                                           iInfo.iActiveCamera == ECamActiveCameraPrimary &&
+                                           iConfigManager && 
+                                           iConfigManager->IsAutoFocusSupported() && 
+                                           iAFCancelInProgress );                                           
+                                                                                      
+    if ( Busy() || cancelingAutoFocus )
       {
       PRINT( _L("Camera <> CCamAppController::ReleaseCamera: set release pending") );
       iPendingRelease = ETrue;
@@ -2842,6 +2848,13 @@
         TRAP_IGNORE ( IssueDirectRequestL( ECamRequestImageCancel ) );
         NotifyControllerObservers( ECamEventCaptureComplete, KErrCancel );          
         }
+      //In SetOperation(), it notify observer with ECamEventOperationStateChanged, 
+      //the clear work for flash indicator flag can be done with ECamEventOperationStateChanged in some abnormal cases.
+      if ( ECamControllerImage == CurrentMode() && iInfo.iActiveCamera == ECamActiveCameraPrimary )
+        {             
+        SetOperation( ECamNoOperation );
+        }
+
         
       //iInfo.iMode            = ECamControllerShutdown;
       //iInfo.iTargetMode      = ECamControllerIdle;