diff -r 11893e44ad1b -r e07c9cb4153d multimediacommscontroller/mmcccontroller/src/mcccamerahandler.cpp --- 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" ) }