diff -r b25d6a5c0a63 -r f58ead8cf73c multimediacommscontroller/mmcccontroller/src/mcccamerahandler.cpp --- a/multimediacommscontroller/mmcccontroller/src/mcccamerahandler.cpp Mon May 03 12:52:41 2010 +0300 +++ b/multimediacommscontroller/mmcccontroller/src/mcccamerahandler.cpp Thu May 27 13:16:26 2010 +0300 @@ -731,10 +731,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 +763,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" ) }