diff -r fe894bb075c2 -r 79f826a55db2 harvester/server/src/harvesterao.cpp --- a/harvester/server/src/harvesterao.cpp Mon Sep 27 15:53:05 2010 +0300 +++ b/harvester/server/src/harvesterao.cpp Wed Oct 06 15:08:08 2010 +0300 @@ -506,7 +506,7 @@ // void CHarvesterAO::HandleUnmount( TUint32 aMediaId ) { - WRITELOG1( "CHarvesterAO::HandleUnmount(%d)", aMediaId ); + WRITELOG1( "CHarvesterAO::HandleUnmount(%u)", aMediaId ); OstTrace1( TRACE_NORMAL, CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount;aMediaId=%d", aMediaId ); iUnmountDetected = ETrue; @@ -3126,30 +3126,50 @@ partialRestore = ETrue; #endif - if ( !partialRestore ) - { - return; - } - if( !iMdeSessionInitialized ) { return; } - iMdEHarvesterSession->ChangeCDriveMediaId(); + if( partialRestore ) + { + iMdEHarvesterSession->ChangeCDriveMediaId(); - WRITELOG("CHarvesterAO::BootPartialRestoreScanL() - partial restore"); - OstTrace0( TRACE_NORMAL, CHARVESTERAO_BOOTPARTIALRESTORESCANL, "CHarvesterAO::BootPartialRestoreScanL - partial restore" ); + WRITELOG("CHarvesterAO::BootPartialRestoreScanL() - partial restore"); + } + else + { + WRITELOG("CHarvesterAO::BootPartialRestoreScanL() - preinstalled content bootup scan"); + } + OstTrace0( TRACE_NORMAL, CHARVESTERAO_BOOTPARTIALRESTORESCANL, "CHarvesterAO::BootPartialRestoreScanL - prepare bootup scan" ); RPointerArray scanItems; TCleanupItem cleanupItem( MdsUtils::CleanupPtrArray, &scanItems ); CleanupStack::PushL( cleanupItem ); - CHarvesterCenRepUtil::GetPartialRestorePathsL( scanItems ); + if( partialRestore ) + { + CHarvesterCenRepUtil::GetPartialRestorePathsL( scanItems ); + } + + RPointerArray preinstalledItems; + TCleanupItem cleanupItem2( MdsUtils::CleanupPtrArray, &preinstalledItems ); + CleanupStack::PushL( cleanupItem2 ); + + // Scan for preinstalled content anyways + CHarvesterCenRepUtil::GetAlwaysScanOnBootPathsL( preinstalledItems ); + + for( TInt i = preinstalledItems.Count() - 1; i >=0; i-- ) + { + TScanItem* preinstalledLocation = preinstalledItems[i]; + preinstalledLocation->iPreinstalled = MdeConstants::MediaObject::EPreinstalled; + scanItems.Append( preinstalledLocation ); + } + preinstalledItems.Reset(); RPointerArray ignorePaths; - TCleanupItem cleanupItem2( MdsUtils::CleanupPtrArray, &ignorePaths ); - CleanupStack::PushL( cleanupItem2 ); + TCleanupItem cleanupItem3( MdsUtils::CleanupPtrArray, &ignorePaths ); + CleanupStack::PushL( cleanupItem3 ); CHarvesterCenRepUtil::GetIgnoredPartialRestorePathsL( ignorePaths ); @@ -3161,6 +3181,7 @@ iRestoreWatcher->UnregisterL(); CleanupStack::PopAndDestroy( &ignorePaths ); + CleanupStack::PopAndDestroy( &preinstalledItems ); CleanupStack::PopAndDestroy( &scanItems ); } @@ -3270,7 +3291,7 @@ TScanItem* item = new (ELeave) TScanItem(); CleanupStack::PushL( item ); item->iPath = name->AllocL(); - item->iPreinstalled = MdeConstants::MediaObject::ENotPreinstalled; + item->iPreinstalled = preinstalled; CleanupStack::Pop( item ); aScanItems.AppendL( item ); // ownership is transferred }