diff -r 38fb6f7eacd5 -r bf64cebf4673 camerauis/cameraapp/generic/src/CamAppController.cpp --- a/camerauis/cameraapp/generic/src/CamAppController.cpp Tue Apr 27 16:19:06 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamAppController.cpp Tue May 11 15:56:11 2010 +0300 @@ -98,6 +98,7 @@ #include "camuidconstants.h" #include "camconfiguration.h" #include "CamPreCaptureViewBase.h" +#include "CamPostCaptureViewBase.h" #include #include @@ -895,6 +896,7 @@ TCamCameraMode CCamAppController::CurrentMode() const { + PRINT1( _L("Camera <> CCamAppController::CurrentMode:%d"), iInfo.iMode ); return iInfo.iMode; } @@ -2983,11 +2985,6 @@ if( !aStartup ) { - TBool usbPersonality = 0; - User::LeaveIfError ( RProperty::Get (KPSUidUsbWatcher, - KUsbWatcherSelectedPersonality, usbPersonality)); - TInt mmcInserted = 0; - User::LeaveIfError( RProperty::Get( KPSUidUikon, KUikMMCInserted, mmcInserted ) ); CCamAppUi* appUi = static_cast( CEikonEnv::Static()->AppUi() ); if(IntegerSettingValue(ECamSettingItemRemovePhoneMemoryUsage) && @@ -2996,6 +2993,14 @@ ( appUi->PreCaptureMode() == ECamPreCapViewfinder || appUi->PreCaptureMode() == ECamPreCapGenericSetting ) ) { + TBool usbPersonality = 0; + #ifndef __WINSCW__ + User::LeaveIfError ( RProperty::Get (KPSUidUsbWatcher, + KUsbWatcherSelectedPersonality, usbPersonality)); + #endif // __WINSCW__ + TInt mmcInserted = 0; + User::LeaveIfError( RProperty::Get( KPSUidUikon, KUikMMCInserted, mmcInserted ) ); + if( KUsbPersonalityIdMS == usbPersonality ) { SwitchToStandbyL( ECamErrMassStorageMode ); @@ -7880,7 +7885,7 @@ appUi->GetActiveViewId( activeView ); CCamPreCaptureViewBase* view = static_cast( appUi->View( activeView.iViewUid ) ); if ( iInfo.iOperation == ECamStandby || - ( view && view->IsInStandbyMode() ) ) + ( view && view->IsInStandbyMode() ) && appUi->IsRecoverableStatus() ) { PRINT( _L("Camera HandleSlideOpenedL => Exit Standby view") ); view->HandleCommandL( ECamCmdExitStandby ); @@ -8857,12 +8862,14 @@ TBool CCamAppController::Busy() const { + PRINT1(_L("Camera <> CCamAppController::Busy:%d"), iBusyFlags ); return (EBusyNone != iBusyFlags || CameraControllerBusy() ); } TBool CCamAppController::CameraControllerBusy() const { + PRINT1(_L("Camera <> CCamAppController::CameraControllerBusy:%d"), iCameraController->ControllerInfo().iBusy ); return (iCameraController && ECamBusyOff != iCameraController->ControllerInfo().iBusy ); } @@ -10462,7 +10469,8 @@ if ( (driveStatus & KMassStorageBits) == KMassStorageBits && !(driveStatus & DriveInfo::EDriveCorrupt) && - ((KErrNone == ret) && (KUsbPersonalityIdMS != usbPersonality) ) ) + ( KErrNotFound == ret || // USB watcher is not loaded + ( (KErrNone == ret) && (KUsbPersonalityIdMS != usbPersonality) ) ) ) { return ETrue; } @@ -10632,7 +10640,7 @@ { PRINT( _L("Camera <> Phone memory is the preferred storage location. Nothing to be done here. Return KErrNone.") ) PRINT( _L("Camera <= CCamAppController::DriveChangeL" ) ); - + return KErrNone; } if ( ( !IsMemoryAvailable( ECamMediaStorageCard, EFalse ) || @@ -10687,7 +10695,7 @@ iDismountPending = ETrue; // Mass memory may be the forced storage location. Then it's necessary // to switch to (forced) phone memory - ForceUsePhoneMemoryL( ETrue ); + TRAP_IGNORE( ForceUsePhoneMemoryL( ETrue ) ); PRINT( _L("Camera <= CCamAppController::DriveChangeL dismount pending" ) ); } @@ -10695,7 +10703,7 @@ { // Mass memory may be the forced storage location. Then it's necessary // to switch to (forced) phone memory - ForceUsePhoneMemoryL( ETrue ); + TRAP_IGNORE( ForceUsePhoneMemoryL( ETrue ) ); PRINT( _L("Camera <= CCamAppController::DriveChangeL dismount ok" ) ); } @@ -10710,7 +10718,7 @@ if ( iForceUseOfPhoneMemory ) { PRINT( _L("Camera <> Phone memory is forced, switch back to user selected storage location.") ) - ForceUsePhoneMemoryL( EFalse ); + TRAP_IGNORE( ForceUsePhoneMemoryL( EFalse ) ); } else { @@ -10729,19 +10737,21 @@ appUi->IsRecoverableStatus() ) { TInt mmcInserted = 0; + TInt usbPersonality = 0; User::LeaveIfError( RProperty::Get( KPSUidUikon, KUikMMCInserted, mmcInserted ) ); + User::LeaveIfError(RProperty::Get(KPSUidUsbWatcher, + KUsbWatcherSelectedPersonality, + usbPersonality) ); if( !IsMemoryAvailable(ECamMediaStorageMassStorage) && !IsMemoryAvailable(ECamMediaStorageCard) ) { - if( mmcInserted ) + if( KUsbPersonalityIdMS == usbPersonality ) { SwitchToStandbyL( ECamErrMassStorageMode ); - } - else + else if ( !mmcInserted ) { SwitchToStandbyL( ECamErrMemoryCardNotInserted ); - } } } @@ -10756,6 +10766,26 @@ } } + if( appUi->CurrentViewState() == ECamViewStatePostCapture ) + { + if( aType == EDriveDismount && !IsMemoryAvailable( currentStorage, EFalse )) + { + TVwsViewId activeView; + if ( appUi->GetActiveViewId( activeView ) == KErrNone ) + { + if( ECamViewIdStillPostCapture == activeView.iViewUid.iUid || + ECamViewIdVideoPostCapture == activeView.iViewUid.iUid ) + { + CCamPostCaptureViewBase* view = + static_cast( appUi->View( activeView.iViewUid ) ); + if( view ) + { + view->HandleCommandL( EAknSoftkeyBack ); + } + } + } + } + } PRINT( _L("Camera <= CCamAppController::DriveChangeL" ) ); return KErrNone; @@ -10955,8 +10985,12 @@ { PRINT( _L( "Camera => CCamAppController::CompleteCameraConstructionL" ) ); iCameraController->CompleteSwitchCameraL(); - // start reserve and poweron already here - IssueModeChangeSequenceL( ETrue ); + // start reserve and poweron already here unless embedded mode used + CCamAppUi* appUi = static_cast( CEikonEnv::Static()->AppUi() ); + if( appUi && !appUi->IsEmbedded() ) + { + IssueModeChangeSequenceL( ETrue ); + } PRINT( _L( "Camera <= CCamAppController::CompleteCameraConstructionL" ) ); } @@ -11013,6 +11047,8 @@ { iRotationArray->Reset(); } + if( BurstCaptureArray()->Snapshot( iCurrentImageIndex ) ) + { // copy snapshot to preserve the original snapshot bitmap // first get the handle for the original snapshot bitmap CFbsBitmap* snapshot = new (ELeave)CFbsBitmap(); @@ -11039,6 +11075,7 @@ iRotatorAo->RotateL( iRotatedSnapshot, MapCamOrientation2RotationAngle( iCaptureOrientation ) ); CleanupStack::PopAndDestroy(snapshot); + } PRINT( _L( "Camera <= CCamAppController::RotateSnapshotL" ) ); } @@ -11287,5 +11324,17 @@ { return iIssueModeChangeSequenceSucceeded; } + +// --------------------------------------------------------------------------- +// CCamAppController::EmbeddedStartupSequence +// +// --------------------------------------------------------------------------- +// +void CCamAppController::EmbeddedStartupSequence() + { + // If startup sequence fails at this point, it will be tried again later + TRAP_IGNORE( IssueModeChangeSequenceL( ETrue ) ); + } + // End of File