multimediacommscontroller/mmcccontroller/src/mcccamerahandler.cpp
branchGCC_SURGE
changeset 36 e07c9cb4153d
parent 28 434647e7f45b
--- a/multimediacommscontroller/mmcccontroller/src/mcccamerahandler.cpp	Thu Jun 17 22:31:54 2010 +0100
+++ b/multimediacommscontroller/mmcccontroller/src/mcccamerahandler.cpp	Thu Jul 22 16:37:27 2010 +0100
@@ -150,6 +150,10 @@
     
     iViewFinderSettings = aSetting;
     
+    if ( !iViewFinderSettings.iEnabled ){
+        __CONTROLLER( "CMccCameraHandler::EnableViewFinderL, param update, exit" )
+        return;
+    }
     __CONTROLLER( "CMccCameraHandler::EnableViewFinderL, starting vf" )
 
     CCamera* cam = IsCameraReady() ? iCamera : NULL;
@@ -217,8 +221,9 @@
 	                       iViewFinderSettings.iSize.iWidth)
     __CONTROLLER_INT2( "CMccCameraHandler::GetViewFinderSettingsL, location",  
 	                       iViewFinderSettings.iLocation.iX, 
-	                       iViewFinderSettings.iLocation.iY)
-    aSetting = iViewFinderSettings;    
+	                       iViewFinderSettings.iLocation.iY)               
+    aSetting = iViewFinderSettings;  
+    aSetting.iEnabled = iViewFinderEnabled;
     __CONTROLLER( "CMccCameraHandler::GetViewFinderSettingsL,exit" )
     }
 
@@ -731,10 +736,16 @@
 void CMccCameraHandler::DoPowerOnComplete( TInt aError )
 	{
 	__CONTROLLER_INT1( "CMccCameraHandler::DoPowerOnComplete, with value", aError )
+	
 	if ( aError == KErrNone )
 		{
 		iState = EPowered;
 		
+	    // Notify observers about success, important to do before VF handling
+		// as VF behaves more nicely at enabling when it sees that media recorder
+		// is already using camera.
+	    NotifyObservers( aError );
+		
 		// Viewfinder was enabled before resource release, enable again.
 		// Also set old camera settings.
 		if ( iViewFinderEnabled )
@@ -757,10 +768,10 @@
 		{
 		__CONTROLLER_INT1( "CMccCameraHandler::DoPowerOnComplete, powering failed", aError )
 		iState = EFailed;
-		}	
-	
-	// Notify observers about success or failure
-    NotifyObservers( aError );
+		
+	    // Notify observers about failure
+	    NotifyObservers( aError );
+		}
     
 	__CONTROLLER( "CMccCameraHandler::DoPowerOnComplete, exit" )
 	}