# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1271251697 -10800 # Node ID 51035f0751c285aac204b60ce5e9caaeb52cd3b7 # Parent 780c925249c1d391336957b8cdc564e24da684f1 Revision: 201013 Kit: 201015 diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/audiofetcher/src/audiofetcherdialog.cpp --- a/mmappcomponents/audiofetcher/src/audiofetcherdialog.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/audiofetcher/src/audiofetcherdialog.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -196,7 +196,7 @@ case EAknSoftkeySelect : { TInt index = CurrentItemListIndex(); - TBuf<128> fileName; + TFileName fileName; iFileHandler->GetAttribute( index, CAudioFetcherFileHandler::EAttrFullName, fileName, 0 ); iSelectedFiles.AppendL( fileName ); @@ -928,7 +928,7 @@ TBool closeDialog = EFalse; TInt index = CurrentItemListIndex(); - TBuf<128> fileName; + TFileName fileName; iFileHandler->GetAttribute( index, CAudioFetcherFileHandler::EAttrFullName, fileName, 0 ); iSelectedFiles.AppendL( fileName ); diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/harvester/filehandler/src/mpxharvesterdbmanager.cpp --- a/mmappcomponents/harvester/filehandler/src/mpxharvesterdbmanager.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/harvester/filehandler/src/mpxharvesterdbmanager.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -168,6 +168,7 @@ TRAP( check, GetDatabaseL(static_cast(driveNum)) ); if( check == KErrNotFound ) { + MPX_DEBUG1("CMPXHarvesterDatabaseManager::OpenAllDatabasesL: re-creating database"); CMPXHarvesterDB* dB = CMPXHarvesterDB::NewL( static_cast(driveNum), iFs ); CleanupStack::PushL( dB ); @@ -179,6 +180,7 @@ } else { + MPX_DEBUG2("CMPXHarvesterDatabaseManager::OpenAllDatabasesL: opening failed, error=%d, removing database", openError); CleanupStack::PopAndDestroy( dB ); } } @@ -187,6 +189,7 @@ TRAPD(openError, GetDatabaseL(static_cast(driveNum)).OpenL() ); if(openError != KErrNone) { + MPX_DEBUG2("CMPXHarvesterDatabaseManager::OpenAllDatabasesL: opening failed, error=%d, removing database", openError); TRAP_IGNORE( RemoveDatabaseL(static_cast(driveNum))); } } @@ -293,6 +296,19 @@ if ( db->GetDbDrive() == aDrive) { db->Close(); +#ifdef __RAMDISK_PERF_ENABLE + if( iRAMDiskPerfEnabled && db->IsUseRamDrive() ) + { + MPX_DEBUG1("CMPXHarvesterDatabaseManager::CloseDatabase DB is on RAM"); + db->SetRamDriveInfo( iRAMDrive, EFalse ); + TRAPD( err, DoCopyDBFromRamL(aDrive) ); + if ( err ) + { + MPX_DEBUG2("CMPXHarvesterDatabaseManager::CloseDatabase DB copy error=%d", err); + RemoveDummyFile(i); + } + } +#endif break; } } @@ -589,6 +605,8 @@ if( iRAMDiskPerfEnabled ) { + // Should not leave until all the databases have been copied from RAM drive. + TInt leaveError = KErrNone; TInt count(iDatabases.Count()); for (TInt i = 0; i < count; ++i) { @@ -605,8 +623,19 @@ iDatabases[i]->SetRamDriveInfo( iRAMDrive, EFalse ); // Get the db state in order to restore it later. TDbState dbState = iDatabases[i]->GetDbState(); - iDatabases[i]->SetDbStateL(EDbClose); - TRAP( err, DoCopyDBFromRamL(drive) ); + TRAP( err, iDatabases[i]->SetDbStateL(EDbClose) ); + if ( err == KErrNone ) + { + TRAP( err, DoCopyDBFromRamL(drive) ); + } + else + { + // Error closing db on RAM drive, try to delete it. + TFileName ramDB; + ramDB = GenerateHarvesterDbName( drive, ETrue ); + BaflUtils::DeleteFile(iFs, ramDB); + } + if ( err ) { MPX_DEBUG2("CMPXHarvesterDatabaseManager::CopyDBsFromRamL copy error=%d", err); @@ -615,8 +644,13 @@ } // Restore the db state. - iDatabases[i]->SetDbStateL( dbState ); + TRAPD( error, iDatabases[i]->SetDbStateL( dbState ) ); + if ( error && !leaveError ) + { + leaveError = error; + } } + User::LeaveIfError( leaveError ); } } @@ -635,14 +669,13 @@ src = GenerateHarvesterDbName( aDriveUnit, ETrue ); MPX_DEBUG3("CMPXHarvesterDatabaseManager::DoCopyDBFromRamL from %S to %S", &src, &dst ); - // Rename the temp file into real Db name TFileName dummyDbFileName = GenerateDummyDbName( aDriveUnit ); //Copy Db from RAM to replace dummy file err = BaflUtils::CopyFile(iFs, src, dummyDbFileName); MPX_DEBUG2("CMPXHarvesterDatabaseManager::DoCopyDBFromRamL database copied from ram drive err=%d.", err); - // delete db in ram drive. + // delete db on ram drive. TInt delErr = BaflUtils::DeleteFile(iFs, src); MPX_DEBUG3("CMPXHarvesterDatabaseManager::DoCopyDBFromRamL db on ram drive deleted file=%S, err=%d", &src, delErr); diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/harvester/filehandler/src/mpxharvesterfilehandlerimp.cpp --- a/mmappcomponents/harvester/filehandler/src/mpxharvesterfilehandlerimp.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/harvester/filehandler/src/mpxharvesterfilehandlerimp.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: Handles all file related activities -* Version : %version: e003sa33#72.1.14.2.4.1.4.1.2.1.3 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: da1mmcf#72.1.14.2.4.1.4.1.2.1.4 % << Don't touch! Updated by Synergy at check-out. * */ @@ -438,6 +438,7 @@ // 4: USB end we re-open all db and scan for new files // 5: MTP start we stop monitoring for new files (no dismount) // 6: MTP end we re-open all db, files added already, restart monitor + // 7: Disk dismount: stop scanning, close the dismounting DB // #ifdef RD_MULTIPLE_DRIVE // Get all visible drives @@ -632,9 +633,11 @@ #endif //__RAMDISK_PERF_ENABLE break; } - case EPowerKeyEjectEvent: + case EDiskDismountEvent: { + MPX_DEBUG2("Disk dismount notification, drive %d", aData); CancelScan(); + iDBManager->CloseDatabase( (TDriveNumber) aData ); break; } default: diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/harvester/metadataextractor/src/mpxfileinfoutility.cpp --- a/mmappcomponents/harvester/metadataextractor/src/mpxfileinfoutility.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/harvester/metadataextractor/src/mpxfileinfoutility.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: This class is responsible for reading file info -* Version : %version: da1mmcf#5.1.3.1.6 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: da1mmcf#5.1.3.1.8 % << Don't touch! Updated by Synergy at check-out. * * Copyright © 2005 Nokia. All rights reserved. */ @@ -65,6 +65,8 @@ // Destructor CMPXFileInfoUtility::~CMPXFileInfoUtility() { + MPX_DEBUG1("CMPXFileInfoUtility::~CMPXFileInfoUtility()<---"); + iAudioControllers.ResetAndDestroy(); //Reset(); // Close all MMF controllers in the cache @@ -88,6 +90,9 @@ } REComSession::FinalClose(); + + MPX_DEBUG1("CMPXFileInfoUtility::~CMPXFileInfoUtility()--->"); + } // ---------------------------------------------------------------------------- @@ -106,7 +111,7 @@ void CMPXFileInfoUtility::OpenFileL(RFile& aFile, const TDesC& aMimeType /*= KNullDesC*/) { - MPX_DEBUG1("CMPXFileInfoUtility::OpenFileL()"); + MPX_DEBUG1("CMPXFileInfoUtility::OpenFileL()<---"); Reset(); HBufC* fileNameBuf = HBufC::NewLC(KMaxFileName); @@ -125,10 +130,8 @@ TBool enableUI = EFalse; //Code taken from TMMFileHandleSource - - - //{//build custom mmf message packet - //based on CMMFileSourceSink::DoCreateFileHandleSourceConfigDataL() + //build custom mmf message packet + //based on CMMFileSourceSink::DoCreateFileHandleSourceConfigDataL() CBufFlat* buf = CBufFlat::NewL(KMCExpandSize); CleanupStack::PushL(buf); RBufWriteStream stream; @@ -152,22 +155,21 @@ stream.CommitL(); CleanupStack::PopAndDestroy(&stream); - //iSourceSinkData = buf->Ptr(0).AllocL(); - //CleanupStack::PopAndDestroy(buf); - //} - - // User::LeaveIfError(iController->Reset()); + // Add new data source + MPX_DEBUG1("CMPXFileInfoUtility::OpenFileL()- AddDataSource()"); - - // Add new data source User::LeaveIfError(iController->AddDataSource(KUidMmfFileSource, buf->Ptr(0), dataSource)); + MPX_DEBUG1("CMPXFileInfoUtility::OpenFileL()- AddDataSink()"); User::LeaveIfError(iController->AddDataSink(KUidMmfAudioOutput, KNullDesC8)); CleanupStack::PopAndDestroy(buf); + + MPX_DEBUG1("CMPXFileInfoUtility::OpenFileL()--->"); + } // ---------------------------------------------------------------------------- @@ -176,21 +178,25 @@ // void CMPXFileInfoUtility::Reset() { - // Reset the controller + MPX_DEBUG1("CMPXFileInfoUtility::Reset()<---"); + if(iController) { - if(iCurrentControllerUid == 0x101FAFB1 || iCurrentControllerUid == 0x10283351 - || iCurrentControllerUid == 0x10207B65 ) + // This is just for RA, WMA does not use controller + if( iCurrentControllerUid == 0x10207B65 ) // Helix Controller UID { + MPX_DEBUG1("CMPXFileInfoUtility::Reset(), Close Controller - only for RA "); iController->Close(); delete iController; iController = NULL; } else { - iController->Reset(); + MPX_DEBUG1("CMPXFileInfoUtility::Reset(), Reset Controller "); + iController->Reset(); } - } + } + MPX_DEBUG1("CMPXFileInfoUtility::Reset()--->"); } @@ -200,13 +206,15 @@ // TTimeIntervalMicroSeconds CMPXFileInfoUtility::Duration() { - MPX_DEBUG1("CMPXFileInfoUtility::Duration()"); + MPX_DEBUG1("CMPXFileInfoUtility::Duration()<---"); TTimeIntervalMicroSeconds duration; TInt err = iController->GetDuration(duration); if(err != KErrNone) { duration = TInt64(0); } + MPX_DEBUG2("CMPXFileInfoUtility::Duration(), duration = %ld --->", duration ); + return duration; } @@ -216,11 +224,16 @@ // TUint CMPXFileInfoUtility::BitRate() { + MPX_DEBUG1("CMPXFileInfoUtility::BitRate()<---"); + RMMFAudioControllerCustomCommands customCommands(*iController); TUint bitRate(0); //Ignore return value, bitRate remain 0 if error customCommands.GetSourceBitRate(bitRate); + + MPX_DEBUG2("CMPXFileInfoUtility::BitRate(), bit rate = %d --->", bitRate); + return bitRate; } @@ -230,11 +243,16 @@ // TUint CMPXFileInfoUtility::SampleRate() { + MPX_DEBUG1("CMPXFileInfoUtility::SampleRate()<---"); + RMMFAudioControllerCustomCommands customCommands(*iController); TUint sampleRate(0) ; //Ignore return value, sampleRate remain 0 if error customCommands.GetSourceSampleRate(sampleRate); + + MPX_DEBUG2("CMPXFileInfoUtility::SampleRate(), sample rate = %d --->", sampleRate); + return sampleRate; } @@ -245,7 +263,8 @@ const TDesC& aMimeType, TUid& aUid) { - MPX_DEBUG1("CMPXFileInfoUtility::FindControllerL()"); + MPX_DEBUG1("CMPXFileInfoUtility::FindControllerL()<---"); + TBool found(EFalse); TInt i(0); TInt j(0); @@ -292,6 +311,9 @@ } } } + + MPX_DEBUG1("CMPXFileInfoUtility::FindControllerL()--->"); + } // ---------------------------------------------------------------------------- @@ -302,11 +324,10 @@ // ---------------------------------------------------------------------------- void CMPXFileInfoUtility::OpenControllerL(const TUid& aUid) { - MPX_DEBUG1("CMPXFileInfoUtility::OpenControllerL()"); - - // 3gp and helix (wma) do not allow controller caching - if(aUid.iUid == 0x101FAFB1 || aUid.iUid == 0x10283351 - || aUid.iUid == 0x10207B65 ) + MPX_DEBUG1("CMPXFileInfoUtility::OpenControllerL()<---"); + + // RA does not allow controller caching + if( aUid.iUid == 0x10207B65 ) // RA Controller Uid { iCurrentControllerUid = aUid.iUid; TMMFPrioritySettings prioritySettings; @@ -319,9 +340,11 @@ User::LeaveIfError(iController->Open(aUid, prioritySettings)); iCurrentControllerUid = aUid.iUid; + MPX_DEBUG1("CMPXFileInfoUtility::OpenControllerL(), RA Controller open --->"); + return; } - + // check if we already have controller open for this UID in the cache RMMFController* controller = const_cast(iMMFControllers.Find(aUid.iUid)); @@ -335,10 +358,11 @@ TUint32* key = new (ELeave) TUint32(aUid.iUid); CleanupStack::PushL(key); - // Now instantiate the first controller in the array - TMMFPrioritySettings prioritySettings; - prioritySettings.iPriority = EMdaPriorityNormal; - prioritySettings.iPref = EMdaPriorityPreferenceTimeAndQuality; + + // Now instantiate the first controller in the array + TMMFPrioritySettings prioritySettings; + prioritySettings.iPriority = EMdaPriorityNormal; + prioritySettings.iPref = EMdaPriorityPreferenceTimeAndQuality; // Try to open controller User::LeaveIfError(controller->Open(aUid, @@ -353,7 +377,9 @@ iController = controller; iCurrentControllerUid = aUid.iUid; - + + MPX_DEBUG1("CMPXFileInfoUtility::OpenControllerL()--->"); + } // ----------------------------------------------------------------------------- @@ -362,6 +388,8 @@ // void CMPXFileInfoUtility::CreateAudioFormatsArrayL() { + MPX_DEBUG1("CMPXFileInfoUtility::CreateAudioFormatsArrayL()<---"); + CMMFControllerPluginSelectionParameters* cSelect = CMMFControllerPluginSelectionParameters::NewLC(); CMMFFormatSelectionParameters* fSelect = @@ -381,6 +409,9 @@ cSelect->ListImplementationsL(iAudioControllers); // Clean up CleanupStack::PopAndDestroy(3); //fSelect, cSelect, mediaIds + + MPX_DEBUG1("CMPXFileInfoUtility::CreateAudioFormatsArrayL()--->"); + } // End of File diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp --- a/mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -12,11 +12,10 @@ * Contributors: * * Description: Extracts metadata from a file -* Version : %version: da1mmcf#38.1.4.2.6.1.7 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: da1mmcf#38.1.4.2.6.1.9 % << Don't touch! Updated by Synergy at check-out. * */ - #include #include #include @@ -45,10 +44,14 @@ #include "mpxmetadataextractor.h" #include "mpxfileinfoutility.h" + +_LIT( KWmaMimeType, "audio/x-ms-wma" ); +_LIT( KWmaCafMimeType, "x-caf-audio/x-ms-wma" ); + #ifdef RD_MPX_TNM_INTEGRATION _LIT( KImageFileType, "image/jpeg" ); const TInt KMPXTimeoutTimer = 3000000; // 3 seconds -const TInt KMPXMaxThumbnailRequest = 5; +const TInt KMPXMaxThumbnailRequest = 2; #endif //RD_MPX_TNM_INTEGRATION #ifdef ABSTRACTAUDIOALBUM_INCLUDED @@ -239,6 +242,8 @@ TInt err = file.Open( iFs, *fileName, EFileRead | EFileShareReadersOrWriters ); CleanupClosePushL(file); + // Initially set default tags. + SetDefaultL( *media ); // Metadata related // if( err == KErrNone ) @@ -247,32 +252,18 @@ HBufC8* mimeType8 = HBufC8::NewLC( mimeType.Length() ); mimeType8->Des().Append( mimeType ); TRAPD( metadataerror, iMetadataUtility->OpenFileL( file, *mimeType8 ) ); + MPX_DEBUG2("CMPXMetadataExtractor::CreateMediaL, error %d parsing metadata", + metadataerror ); CleanupStack::PopAndDestroy( mimeType8 ); - - // No problem - if( KErrNone == metadataerror ) - { - // Add TRAPD to capture exception KErrNoMemory. - //If album art size is too large, trap this exception and SetDefaultL. - //Fix EYLU-7ESE5L - TRAPD( err, SetMediaPropertiesL( *media, *fileName ) ); - if ( KErrNoMemory == err ) - { - SetDefaultL( *media ); - } - } - else // Error, Set defaults - { - SetDefaultL( *media ); - } + + // Even if there is error extracting metadata, fill extracted tags. + TRAP( metadataerror, SetMediaPropertiesL( *media, *fileName ) ); + MPX_DEBUG2("CMPXMetadataExtractor::CreateMediaL, error %d setting tags", + metadataerror ); // Reset the utility iMetadataUtility->ResetL(); } - else // Error, Set defaults - { - SetDefaultL( *media ); - } // Common properties that we can extract // @@ -461,11 +452,17 @@ if ( KErrNone != err ) { MPX_DEBUG2("CMPXMetadataExtractor::SetMediaPropertiesL - error jpeg = %i", err); - User::Leave( err ); - } - CleanupStack::PushL( value8 ); - AddMediaAlbumArtL( aMedia, aFile, *value8 ); - CleanupStack::Pop( value8 ); + } + else + { + CleanupStack::PushL( value8 ); + TRAPD( err, AddMediaAlbumArtL( aMedia, aFile, *value8 ) ); + if ( KErrNone != err ) + { + MPX_DEBUG2("CMPXMetadataExtractor::SetMediaPropertiesL - error album art = %i", err); + } + CleanupStack::Pop( value8 ); + } MPX_PERF_END(CMPXMetadataExtractor_SetMediaPropertiesL_JPEG_TNM); #else //RD_MPX_TNM_INTEGRATION aMedia.SetTextValueL( KMPXMediaMusicAlbumArtFileName, @@ -479,11 +476,33 @@ *value ); break; } + case EMetaDataDuration: + { + const TDesC& mimeType = aMedia.ValueText( KMPXMediaGeneralMimeType ); + MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL, mimeType = %S", &mimeType); + + // Verify if WMA, get the duration + if( mimeType.Compare(KWmaMimeType) == 0 || mimeType.Compare(KWmaCafMimeType) == 0 ) + { + MPX_DEBUG1("CMPXMetadataExtractor::SetMediaPropertiesL- WMA"); + + // Perform the duration conversion + TLex lexer( *value ); + TInt32 duration ( 0 ); + lexer.Val( duration ); // [second] + duration *= 1000; // [msec] + + aMedia.SetTObjectValueL( KMPXMediaGeneralDuration, + duration ); + + MPX_DEBUG2("CMPXMetadataExtractor::SetMediaPropertiesL- duration = %i", duration); + } + break; + } case EMetaDataOriginalArtist: // fall through case EMetaDataVendor: // fall through case EMetaDataRating: // fall through case EMetaDataUniqueFileIdentifier: // fall through - case EMetaDataDuration: // fall through case EMetaDataDate: // fall through { // not used @@ -580,33 +599,49 @@ iDrmMediaUtility->Close(); - // File Size + // + // File Size --- The following needs MMF support // TInt size( 0 ); if( aFileErr == KErrNone ) { - aFileHandle.Size( size ); - aProp.SetTObjectValueL( KMPXMediaGeneralSize, - size ); + const TDesC& mimeType = aProp.ValueText( KMPXMediaGeneralMimeType ); + MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL, mimeType = %S", &mimeType); + + // Verify if WMA, skip getting info from MMF + if( mimeType.Compare(KWmaMimeType) == 0 || mimeType.Compare(KWmaCafMimeType) == 0 ) + { + // No need to get MMF support + MPX_DEBUG1("CMPXMetadataExtractor::SetExtMediaPropertiesL, skip MMF "); + } + else + { + MPX_DEBUG1("CMPXMetadataExtractor::SetExtMediaPropertiesL, get MMF controller"); + aFileHandle.Size( size ); + aProp.SetTObjectValueL( KMPXMediaGeneralSize, size ); - // Duration, bitrate, samplerate, etc - // - if( !aMetadataOnly ) + // Duration, bitrate, samplerate, etc + // + if( !aMetadataOnly ) { - TRAPD(err2, iFileInfoUtil->OpenFileL( + TRAPD(err2, iFileInfoUtil->OpenFileL( aFileHandle, aProp.ValueText(KMPXMediaGeneralMimeType))); - MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL, file info util error %i", err2); - if( KErrNone == err2 ) - { - aProp.SetTObjectValueL( KMPXMediaAudioBitrate, - iFileInfoUtil->BitRate() ); - aProp.SetTObjectValueL( KMPXMediaAudioSamplerate, - iFileInfoUtil->SampleRate() ); - TInt64 duration = (TInt64) iFileInfoUtil->Duration().Int64() / 1000; // ms - aProp.SetTObjectValueL( KMPXMediaGeneralDuration, - duration ); - MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL -- duration %i", duration); + MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL, file info util error %i", err2); + if( KErrNone == err2 ) + { + aProp.SetTObjectValueL( KMPXMediaAudioBitrate, + iFileInfoUtil->BitRate() ); + aProp.SetTObjectValueL( KMPXMediaAudioSamplerate, + iFileInfoUtil->SampleRate() ); + TInt64 duration = (TInt64) iFileInfoUtil->Duration().Int64() / 1000; // ms + aProp.SetTObjectValueL( KMPXMediaGeneralDuration, + duration ); + + MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL -- duration %i", duration); + } + + iFileInfoUtil->Reset(); } } } @@ -618,8 +653,6 @@ // aProp.SetTObjectValueL( KMPXMediaGeneralFlags, dbFlags ); - - iFileInfoUtil->Reset(); MPX_DEBUG1("CMPXMetadataExtractor::SetExtMediaPropertiesL --->"); } @@ -667,8 +700,10 @@ MThumbnailData& /*aThumbnail*/, TThumbnailRequestId /*aId*/ ) { MPX_FUNC("CMPXMetadataExtractor::ThumbnailReady()"); + MPX_DEBUG2("CMPXMetadataExtractor::ThumbnailReady(): iOutstandingThumbnailRequest %d", + iOutstandingThumbnailRequest); iOutstandingThumbnailRequest--; - if ( iOutstandingThumbnailRequest <= KMPXMaxThumbnailRequest ) + if ( iOutstandingThumbnailRequest < KMPXMaxThumbnailRequest ) { StopWaitLoop(); } @@ -867,8 +902,10 @@ { MPX_FUNC("CMPXMetadataExtractor::CheckBeforeSendRequest()"); #ifdef RD_MPX_TNM_INTEGRATION + MPX_DEBUG2("CMPXMetadataExtractor::CheckBeforeSendRequest(): iOutstandingThumbnailRequest %d", + iOutstandingThumbnailRequest); // If thumbnail creation is ongoing, wait til it is done - if ( iOutstandingThumbnailRequest > KMPXMaxThumbnailRequest ) + if ( iOutstandingThumbnailRequest >= KMPXMaxThumbnailRequest ) { MPX_DEBUG1("CMPXMetadataExtractor::CheckBeforeSendRequest(): Thumbnail creation ongoing!"); iTNMBlockCount++; diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/harvester/server/group/mpxharvester.mmp --- a/mmappcomponents/harvester/server/group/mpxharvester.mmp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/harvester/server/group/mpxharvester.mmp Wed Apr 14 16:28:17 2010 +0300 @@ -23,8 +23,12 @@ TARGET mpxharvesterserver.exe TARGETTYPE exe UID 0 0x101FFCA9 +#ifdef WINSCW EPOCHEAPSIZE 0x1000 0x500000 -EPOCSTACKSIZE 0X5000 +#else +EPOCHEAPSIZE 0x1000 0x800000 +#endif +EPOCSTACKSIZE 0x5000 CAPABILITY CAP_SERVER DRM AllFiles VENDORID VID_DEFAULT @@ -40,7 +44,6 @@ SOURCE mpxfsformatmonitor.cpp SOURCE mpxmediaremovalmonitor.cpp SOURCE mpxusbeventhandler.cpp -SOURCE mpxmmcejectmonitor.cpp USERINCLUDE ../inc USERINCLUDE ../../inc @@ -60,3 +63,4 @@ #ifdef RD_MULTIPLE_DRIVE LIBRARY PlatformEnv.lib #endif //RD_MULTIPLE_DRIVE +LIBRARY disknotifyhandler.lib diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/harvester/server/inc/mpxharvesterengine.h --- a/mmappcomponents/harvester/server/inc/mpxharvesterengine.h Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/harvester/server/inc/mpxharvesterengine.h Wed Apr 14 16:28:17 2010 +0300 @@ -32,7 +32,6 @@ class CMPXFsFormatMonitor; class CMPXMediaRemovalMonitor; class CMPXUsbEventHandler; -class CMPXMMCEjectMonitor; class CMPXMedia; class CMPXActiveTaskQueue; class CMPXPlaylistEngine; @@ -306,7 +305,6 @@ CMPXFsFormatMonitor* iFormatMonitor; CMPXMediaRemovalMonitor* iMediaRemovalMonitor; CMPXUsbEventHandler* iUSBMonitor; - CMPXMMCEjectMonitor* iMMCMonitor; // Internal task queue for async operations CMPXActiveTaskQueue* iTaskQueue; diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/harvester/server/inc/mpxmediaremovalmonitor.h --- a/mmappcomponents/harvester/server/inc/mpxmediaremovalmonitor.h Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/harvester/server/inc/mpxmediaremovalmonitor.h Wed Apr 14 16:28:17 2010 +0300 @@ -20,21 +20,35 @@ #define CMPXMEDIAREMOVALMONITOR_H #include +#include #include "mpxsystemeventobserver.h" /** * Class to monitors for File System dismount events + * + * The monitor emits events to MMPXSystemEventObserver + * + * EDiskDismountEvent whenever a drive is about to be dismounted (see RFs::NotifyDismount). + * EDiskRemovedEvent whenever a specified drive has been dismounted or removed + * EDiskInsertedEvent whenever a specified drive has been inserted + * + * The observer is expected to prepare the drive for dismounting during the EDiskDismountEvent. + * + * Dismount monitoring is automatically subscribed for all non-remote drives. + * Inserted/Removed monitor is subscribed only for the drive given in the constructor. + * * @lib Harvester * @since S60 3.0 */ -class CMPXMediaRemovalMonitor : public CActive +class CMPXMediaRemovalMonitor : public CBase, + public MDiskNotifyHandlerCallback { public: /** * Two-phase constructor - * @param aDrive drive to monitor + * @param aDrive drive to monitor for insertions and removals * @param aFs file server session * @param aObserver observer to the event */ @@ -55,24 +69,24 @@ * Virtual destructor */ virtual ~CMPXMediaRemovalMonitor(); - -protected: // From base class - /* - * From CActive + /** + * Check the status of the monitored disks + * + * This check should be done whenever there is a risk that we got + * a NotifyDismount even though the drives actually weren't dismounted. + * */ - void RunL(); - - /* - * From CActive - */ - void DoCancel(); + void CheckDriveStatus(); + +protected: // From Base Class /** - * From CActive + * From MDiskNotifyHandlerCallback */ - TInt RunError(TInt aError); - + void HandleNotifyDismount( TInt aError, const TDismountEvent& aEvent ); + void HandleNotifyDisk( TInt aError, const TDiskEvent& aEvent ); + private: /** @@ -89,6 +103,7 @@ private: // data + CDiskNotifyHandler* iDiskNotifyHandler; // Disk notification handler TInt iDrive; // Drive that is being monitored RFs& iFs; // File Session, not owned TBool iDiskRemoved; // Is the disk inserted diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/harvester/server/inc/mpxmmcejectmonitor.h --- a/mmappcomponents/harvester/server/inc/mpxmmcejectmonitor.h Wed Mar 31 22:26:09 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: MMC Eject monitor -* -*/ - - -#ifndef C_MPXMMCEJECTMONITOR_H -#define C_MPXMMCEJECTMONITOR_H - -#include -#include "mpxsystemeventobserver.h" - -// FORWARD DECLARATIONS -class CMPXPSKeyWatcher; - -/** - * Monitors a SysAp cenrep key for the "eject" mmc menu option - * - * @lib mpxharvester.exe - * @since S60 3.1 - */ -NONSHARABLE_CLASS( CMPXMMCEjectMonitor ) : public CBase, - public MMPXPSKeyObserver - { - -public: - - /** - * Two-phased constructor - */ - static CMPXMMCEjectMonitor* NewL( MMPXSystemEventObserver& aObserver ); - - /** - * Destructor - */ - virtual ~CMPXMMCEjectMonitor(); - -protected: // From Base Class - - /** - * From MMPXPSKeyObserver - */ - void HandlePSEvent( TUid aUid, TInt aKey ); - -private: - - /** - * 2nd phase constructor - */ - void ConstructL(); - - /** - * Private Constructor - */ - CMPXMMCEjectMonitor( MMPXSystemEventObserver& aObserver ); - -private: // data - - CMPXPSKeyWatcher* iPSKeyWatcher; // PS key watcher for USB PS key - - /* - * Observer interface to callback to an observer - */ - MMPXSystemEventObserver& iObserver; // Not owned - }; - -#endif // C_MPXMMCEJECTMONITOR_H diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/harvester/server/src/mpxfsformatmonitor.cpp --- a/mmappcomponents/harvester/server/src/mpxfsformatmonitor.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/harvester/server/src/mpxfsformatmonitor.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -142,6 +142,12 @@ } else // TOperationType::EEnd or TOperationType::EAbort { + //Ignore if formatting is ongoing + TBool formatting = iBackupSession->IsBackupOperationRunning(); + if ( formatting ) + { + return; + } for(TInt i=0; iCollection().CommandL ( EMcCloseCollection, aData ) + ); + } // Avoid Message queue already exist problem // @@ -514,6 +516,15 @@ iTempCollectionUtil = NULL; } } + + if ( aEvent == EUSBMassStorageEndEvent ) + { + // In some cases visit to USB Mass Storage mode can be so brief + // that drives are actually not dismounted at all even though we + // get a NotifyDismount event. In such cases we need to re-issue + // the NotifyDismount requests. + iMediaRemovalMonitor->CheckDriveStatus(); + } } // --------------------------------------------------------------------------- diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/harvester/server/src/mpxmediaremovalmonitor.cpp --- a/mmappcomponents/harvester/server/src/mpxmediaremovalmonitor.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/harvester/server/src/mpxmediaremovalmonitor.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -18,6 +18,7 @@ #include #include +#include #include #include "mpxmediaremovalmonitor.h" @@ -27,14 +28,12 @@ // CMPXMediaRemovalMonitor::CMPXMediaRemovalMonitor ( TInt aDrive, RFs& aFs, MMPXSystemEventObserver& aObserver ) - : CActive(EPriorityHigh), - iDrive( aDrive ), + : iDrive( aDrive ), iFs( aFs ), iDiskRemoved( EFalse ), iObserver( aObserver ) { - CActiveScheduler::Add(this); } @@ -44,19 +43,11 @@ // void CMPXMediaRemovalMonitor::ConstructL() { - MPX_DEBUG1(_L("CMPXMediaRemovalMonitor::ConstructL <---")); + MPX_FUNC("CMPXMediaRemovalMonitor::ConstructL"); + iDiskNotifyHandler = CDiskNotifyHandler::NewL(*this, iFs); + CheckDriveStatus(); - // Initial state - TDriveInfo drive; - User::LeaveIfError(iFs.Drive(drive, TInt(iDrive))); - iDiskRemoved = (drive.iType == EMediaNotPresent); - - // Start listening - TNotifyType notType(ENotifyDisk); - iFs.NotifyChange( notType, iStatus ); - SetActive(); - - MPX_DEBUG1(_L("CMPXMediaRemovalMonitor::ConstructL --->")); + iDiskNotifyHandler->NotifyDisk(); } @@ -99,74 +90,95 @@ // CMPXMediaRemovalMonitor::~CMPXMediaRemovalMonitor() { - Cancel(); + delete iDiskNotifyHandler; + } + +void CMPXMediaRemovalMonitor::CheckDriveStatus() + { + TDriveList driveList; + TInt driveCount(0); + TInt error = DriveInfo::GetUserVisibleDrives( iFs, driveList, driveCount ); + if ( error != KErrNone ) + { + MPX_DEBUG2("CMPXMediaRemovalMonitor::CheckDriveStatus GetUserVisibleDrives failed, error %d", error); + return; + } + for( TInt driveNum = EDriveA; driveNum < EDriveZ; driveNum++ ) + { + if ( driveNum != EDriveC && driveList[driveNum] ) + { + TDriveInfo driveInfo; + if (iFs.Drive(driveInfo, driveNum) == KErrNone) + { + if ( (driveInfo.iType != EMediaNotPresent) && ! (driveInfo.iDriveAtt & KDriveAttRemote) ) + { + TInt error = iDiskNotifyHandler->NotifyDismount( driveNum ); + MPX_DEBUG3("CMPXMediaRemovalMonitor::CheckDriveStatus monitoring drive %d for dismounts, error %d", driveNum, error); + } + } + if ( driveNum == iDrive ) + { + iDiskRemoved = driveInfo.iType == EMediaNotPresent; + } + } + } } - // --------------------------------------------------------------------------- -// Service the request +// Callback when disk state has changed // --------------------------------------------------------------------------- // -void CMPXMediaRemovalMonitor::RunL() +void CMPXMediaRemovalMonitor::HandleNotifyDisk( TInt aError, const TDiskEvent& aEvent ) { - MPX_DEBUG1(_L("CMPXMediaRemovalMonitor::RunL <---")); - - // Re-subscribe to event. - TNotifyType notType(ENotifyDisk); - iFs.NotifyChange( notType, iStatus ); - SetActive(); - - // Check state - TDriveInfo drive; - User::LeaveIfError(iFs.Drive(drive, TInt(iDrive))); - - // Notify Observer - switch(drive.iType) - { - case EMediaNotPresent: - { - if (!iDiskRemoved) + MPX_DEBUG4("-->CMPXMediaRemovalMonitor::HandleNotifyDisk aError=%d event=%d drive=%d", aError, aEvent.iType, aEvent.iDrive); + if ( aError == KErrNone ) + { + if ( aEvent.iType == EDiskRemoved + || aEvent.iType == EDiskStatusChanged && aEvent.iInfo.iType == EMediaNotPresent ) + { + if ( aEvent.iDrive == iDrive && !iDiskRemoved ) { iObserver.HandleSystemEventL( EDiskRemovedEvent, iDrive ); + iDiskRemoved = ETrue; } - iDiskRemoved = ETrue; - break; - } - default: - { - if ( iDiskRemoved && - ( drive.iMediaAtt & ( KMediaAttLockable|KMediaAttLocked|KMediaAttHasPassword ) ) != - ( KMediaAttLockable|KMediaAttLocked|KMediaAttHasPassword ) ) + + } + else if ( ( aEvent.iType == EDiskAdded || aEvent.iType == EDiskStatusChanged ) + && aEvent.iInfo.iType != EMediaNotPresent ) + { + if ( aEvent.iDrive == iDrive + && iDiskRemoved + && ( aEvent.iInfo.iMediaAtt & ( KMediaAttLockable|KMediaAttLocked|KMediaAttHasPassword ) ) + != ( KMediaAttLockable|KMediaAttLocked|KMediaAttHasPassword ) ) { iObserver.HandleSystemEventL( EDiskInsertedEvent, iDrive ); iDiskRemoved = EFalse; } - break; - } + + if ( !( aEvent.iInfo.iDriveAtt & KDriveAttRemote ) ) + { + TInt error = iDiskNotifyHandler->NotifyDismount( aEvent.iDrive ); + MPX_DEBUG3("CMPXMediaRemovalMonitor::HandleNotifyDisk monitoring drive %d for dismounts, error %d", aEvent.iDrive, error); + } + } } - + + MPX_DEBUG1("<--CMPXMediaRemovalMonitor::HandleNotifyDisk"); + } - MPX_DEBUG1(_L("CMPXMediaRemovalMonitor::RunL --->")); - } // --------------------------------------------------------------------------- -// Cancel NotifyChange request from file system +// Callback when disk is about to be dismounted // --------------------------------------------------------------------------- // -void CMPXMediaRemovalMonitor::DoCancel() +void CMPXMediaRemovalMonitor::HandleNotifyDismount( TInt aError, const TDismountEvent& aEvent ) { - iFs.NotifyChangeCancel(); + MPX_DEBUG3("-->CMPXMediaRemovalMonitor::HandleNotifyDismount aError=%d drive=%d", aError, aEvent.iDrive); + if (aError == KErrNone) + { + TRAP_IGNORE( iObserver.HandleSystemEventL( EDiskDismountEvent, aEvent.iDrive ) ); + TInt error = iDiskNotifyHandler->AllowDismount( aEvent.iDrive ); + MPX_DEBUG3("CMPXMediaRemovalMonitor::HandleNotifyDismount allowed dismount of drive %d, error %d", aEvent.iDrive, error); + } + MPX_DEBUG1("<--CMPXMediaRemovalMonitor::HandleNotifyDismount"); } - -// ---------------------------------------------------------------------------- -// Handles a leave occurring in the request completion event handler RunL() -// Don't care if client has a User::Leave() in RunL(), keep monitoring for events -// ---------------------------------------------------------------------------- -// -TInt CMPXMediaRemovalMonitor::RunError(TInt aError) - { - MPX_DEBUG2("CMPXMediaRemovalMonitor::RunError(%d)", aError ); - (void) aError; // avoid compile warning in urel - - return KErrNone; - } diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/harvester/server/src/mpxmmcejectmonitor.cpp --- a/mmappcomponents/harvester/server/src/mpxmmcejectmonitor.cpp Wed Mar 31 22:26:09 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Monitor for PS Key changes from SysAp ( ME specific ) -* -*/ - - -#include -#include -#include -#include -#include "mpxmmcejectmonitor.h" - -// CONSTANTS -const TUid KMmcEjectAppUid = { 0x101FFAFC }; -const TUint KKeyMmcEjectOperation = 10; - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// Constructor -// --------------------------------------------------------------------------- -// -CMPXMMCEjectMonitor::CMPXMMCEjectMonitor( MMPXSystemEventObserver& aObserver ) : - iObserver( aObserver ) - { - - } - - -// --------------------------------------------------------------------------- -// 2nd phased Constructor -// --------------------------------------------------------------------------- -// -void CMPXMMCEjectMonitor::ConstructL() - { - MPX_DEBUG1(_L("CMPXMMCEjectMonitor::ConstructL <---")); - - iPSKeyWatcher = CMPXPSKeyWatcher::NewL( KMmcEjectAppUid, - KKeyMmcEjectOperation, - this ); - MPX_DEBUG1(_L("CMPXMMCEjectMonitor::ConstructL --->")); - } - - -// --------------------------------------------------------------------------- -// Two-Phase Constructor -// --------------------------------------------------------------------------- -// -CMPXMMCEjectMonitor* CMPXMMCEjectMonitor::NewL( MMPXSystemEventObserver& aObserver ) - { - CMPXMMCEjectMonitor* self = new( ELeave ) CMPXMMCEjectMonitor( aObserver ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -CMPXMMCEjectMonitor::~CMPXMMCEjectMonitor() - { - delete iPSKeyWatcher; - } - -// --------------------------------------------------------------------------- -// Callback when a cenrep key is modified -// --------------------------------------------------------------------------- -// -void CMPXMMCEjectMonitor::HandlePSEvent( TUid /*aUid*/, TInt /*aKey*/ ) - { - MPX_DEBUG1(_L("CMPXMMCEjectMonitor::HandlePSEvent <---")); - TInt value; - iPSKeyWatcher->GetValue( value ); - - // MMC About to be ejected from power key menu - // - if( value == 1 ) - { - TRAP_IGNORE( iObserver.HandleSystemEventL( EPowerKeyEjectEvent, 0 ) ); - } - MPX_DEBUG1(_L("CMPXMMCEjectMonitor::HandlePSEvent --->")); - } - -// END OF FILE diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/inc/cmmmtpdpmetadataaccesswrapper.h --- a/mmappcomponents/mmmtpdataprovider/inc/cmmmtpdpmetadataaccesswrapper.h Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/inc/cmmmtpdpmetadataaccesswrapper.h Wed Apr 14 16:28:17 2010 +0300 @@ -124,7 +124,7 @@ * Deletes metadata information associated with the object * @param aObject, the object need to be deleted */ - void DeleteObjectL( const CMTPObjectMetaData& aObject ); + IMPORT_C void DeleteObjectL( const CMTPObjectMetaData& aObject ); /** * Set current drive info @@ -228,7 +228,7 @@ TBool iOpenSession; MMTPDataProviderFramework& iFramework; - RFs& iFs; // should not remove this member data!!! + RFs& iFs; // should not remove this member data!!! CDesCArray* iAbstractMediaArray; diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/install/rom/mmmtpdpstub.pkg Binary file mmappcomponents/mmmtpdataprovider/install/rom/mmmtpdpstub.pkg has changed diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/install/rom/mmmtpdpupdate.pkg Binary file mmappcomponents/mmmtpdataprovider/install/rom/mmmtpdpupdate.pkg has changed diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/install/rom/mmmtpdpupdatedebug.pkg Binary file mmappcomponents/mmmtpdataprovider/install/rom/mmmtpdpupdatedebug.pkg has changed diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/inc/cabstractmediamtpdataproviderenumerator.h --- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/inc/cabstractmediamtpdataproviderenumerator.h Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/inc/cabstractmediamtpdataproviderenumerator.h Wed Apr 14 16:28:17 2010 +0300 @@ -99,10 +99,6 @@ TInt aError = KErrNone ); void InitStorageL( ); - - /** - * Scan next storage - */ void ScanNextL(); /** diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataprovider.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataprovider.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataprovider.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -118,7 +118,7 @@ iSupportedPropPlaylist.Close(); iSupportedPropAll.Close(); - PRINT( _L( "MM MTP => CAbstractMediaMtpDataProvider::~CAbstractMediaMtpDataProvider" ) ); + PRINT( _L( "MM MTP <= CAbstractMediaMtpDataProvider::~CAbstractMediaMtpDataProvider" ) ); } void CAbstractMediaMtpDataProvider::Cancel() diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataproviderenumerator.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataproviderenumerator.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataproviderenumerator.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -269,7 +269,7 @@ // void CAbstractMediaMtpDataProviderEnumerator::ScanNextL() { - while (iStorages.Count() > 0) + while ( iStorages.Count() > 0 ) { while ( iEnumState < EEnumCount ) { @@ -284,14 +284,15 @@ return; } ++iEnumState; - if (iEnumState == EEnumCount) + if ( iEnumState == EEnumCount ) { break; } InitStorageL(); } + iStorages.Remove( 0 ); - if (iStorages.Count() == 0) + if ( iStorages.Count() == 0 ) { break; } @@ -313,8 +314,6 @@ // void CAbstractMediaMtpDataProviderEnumerator::RunL() { - PRINT( _L( "MM MTP => CAbstractMediaMtpDataProviderEnumerator::RunL" ) ); - // insert all abstract medias into handle db of framework CMPXMedia* media = ( *iAbstractMedias )[iCurrentIndex]; @@ -411,21 +410,39 @@ TUint32 parentHandle = iFramework.ObjectMgr().HandleL( parser.DriveAndPath() ); PERFLOGSTOP( KObjectManagerObjectUid ); - object->SetUint( CMTPObjectMetaData::EParentHandle, parentHandle ); - - PERFLOGSTART( KObjectManagerInsert ); - iObjectMgr.InsertObjectL( *object ); - PERFLOGSTOP( KObjectManagerInsert ); - - CleanupStack::PopAndDestroy( object );// - object + // MTP FW returns KMTPHandleNone for parentHandle in two situations: + // 1. The path doesn't exist + // 2. The object is under root directory + if ( parentHandle == KMTPHandleNone ) + { + if ( BaflUtils::PathExists( iFramework.Fs(), parser.DriveAndPath() ) ) + { + parentHandle = KMTPHandleNoParent; + } + else + { + iDataProvider.GetWrapperL().DeleteObjectL( *object ); + } + } - //Only remember the playlist file for clean up - if( iEnumState == EEnumPlaylist ) + if ( parentHandle != KMTPHandleNone ) { - iDataProvider.GetWrapperL().CreateDummyFile( aSuid ); + object->SetUint( CMTPObjectMetaData::EParentHandle, parentHandle ); + + PERFLOGSTART( KObjectManagerInsert ); + iObjectMgr.InsertObjectL( *object ); + PERFLOGSTOP( KObjectManagerInsert ); + + CleanupStack::PopAndDestroy( object );// - object - // remember the abstract media file for clean up - iDataProvider.GetWrapperL().AddDummyFileL( aSuid ); + //Only remember the playlist file for clean up + if( iEnumState == EEnumPlaylist ) + { + iDataProvider.GetWrapperL().CreateDummyFile( aSuid ); + + // remember the abstract media file for clean up + iDataProvider.GetWrapperL().AddDummyFileL( aSuid ); + } } PRINT( _L( "MM MTP <= CAbstractMediaMtpDataProviderEnumerator::AddEntryL" ) ); diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataproviderrenameobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataproviderrenameobject.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataproviderrenameobject.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -89,14 +89,12 @@ iWrapper.AddDummyFileL( iFileName ); // Do not update MPX db to keep the same behavior in mass storage and device file manager. } - else - { - TRAPD( err, iWrapper.RenameObjectL( *iObjectInfo, iFileName ) ); + + TRAPD( err, iWrapper.RenameObjectL( *iObjectInfo, iFileName ) ); - // should not fail for 1 file, keep it going, as folder already renamed - if ( err != KErrNone ) - PRINT1( _L( "MM MTP <> CRenameObject::PerformAdditionalActionL err = %d" ), err ); - } + // should not fail for 1 file, keep it going, as folder already renamed + if ( err != KErrNone ) + PRINT1( _L( "MM MTP <> CRenameObject::PerformAdditionalActionL err = %d" ), err ); // the reference DB use PUID // so we needn't to update the reference DB diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/inc/mediamtpdataproviderconst.h --- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/inc/mediamtpdataproviderconst.h Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/inc/mediamtpdataproviderconst.h Wed Apr 14 16:28:17 2010 +0300 @@ -111,7 +111,7 @@ enum TMmMtpFramesPerThousandSecondsRange { EMTPMinFramesPerThousandSeconds = 0x00000000, - EMTPMaxFramesPerThousandSeconds = 0x00007530, // 30000 frame per ms (30 frame/s), standard for progressive content + EMTPMaxFramesPerThousandSeconds = 0x00007530, // 30000 frame per thousand seconds (30 frame/s), standard for progressive content EMTPStepFramesPerThousandSeconds = 0x00000001 }; diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/bwins/mmmtpdprequestprocessoru.def --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/bwins/mmmtpdprequestprocessoru.def Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/bwins/mmmtpdprequestprocessoru.def Wed Apr 14 16:28:17 2010 +0300 @@ -4,156 +4,157 @@ ?NewL@CDeleteObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 3 NONAME ; class MMmRequestProcessor * CDeleteObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) ?StartL@CRenameObject@@QAEXKABVTDesC16@@@Z @ 4 NONAME ; void CRenameObject::StartL(unsigned long, class TDesC16 const &) ??1CRequestUnknown@@UAE@XZ @ 5 NONAME ; CRequestUnknown::~CRequestUnknown(void) - ?Release@CRequestProcessor@@MAEXXZ @ 6 NONAME ; void CRequestProcessor::Release(void) - ?HandleRequestL@CRequestProcessor@@MAEHABVTMTPTypeRequest@@W4TMTPTransactionPhase@@@Z @ 7 NONAME ; int CRequestProcessor::HandleRequestL(class TMTPTypeRequest const &, enum TMTPTransactionPhase) - ??1CGetInterdependentPropDesc@@UAE@XZ @ 8 NONAME ; CGetInterdependentPropDesc::~CGetInterdependentPropDesc(void) - ?OpenSessionL@CMmMtpDpAccessSingleton@@SAXXZ @ 9 NONAME ; void CMmMtpDpAccessSingleton::OpenSessionL(void) - ?ServiceL@CGetPartialObject@@MAEXXZ @ 10 NONAME ; void CGetPartialObject::ServiceL(void) - ??0CGetObjectInfo@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 11 NONAME ; CGetObjectInfo::CGetObjectInfo(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?DoHandleResponsePhaseL@CRequestProcessor@@MAEHXZ @ 12 NONAME ; int CRequestProcessor::DoHandleResponsePhaseL(void) - ?NewL@CGetObjectPropDesc@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 13 NONAME ; class MMmRequestProcessor * CGetObjectPropDesc::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??0CGetObjectPropValue@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 14 NONAME ; CGetObjectPropValue::CGetObjectPropValue(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?CheckRequestL@CSetObjectPropList@@MAE?AW4TMTPResponseCode@@XZ @ 15 NONAME ; enum TMTPResponseCode CSetObjectPropList::CheckRequestL(void) - ?RunL@CRequestProcessor@@MAEXXZ @ 16 NONAME ; void CRequestProcessor::RunL(void) - ?ServiceL@CDeleteObject@@MAEXXZ @ 17 NONAME ; void CDeleteObject::ServiceL(void) - ?DoCancel@CSetObjectPropList@@MAEXXZ @ 18 NONAME ; void CSetObjectPropList::DoCancel(void) - ?CleanupDatabaseL@CMmMtpDpMetadataAccessWrapper@@QAEXXZ @ 19 NONAME ; void CMmMtpDpMetadataAccessWrapper::CleanupDatabaseL(void) - ?ServiceL@CGetObjectPropsSupported@@MAEXXZ @ 20 NONAME ; void CGetObjectPropsSupported::ServiceL(void) - ?NewL@CSetObjectReferences@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 21 NONAME ; class MMmRequestProcessor * CSetObjectReferences::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?Release@CMmMtpDpAccessSingleton@@SAXXZ @ 22 NONAME ; void CMmMtpDpAccessSingleton::Release(void) - ?UsbDisconnect@CSendObject@@MAEXXZ @ 23 NONAME ; void CSendObject::UsbDisconnect(void) - ?ServiceL@CGetFormatCapabilities@@MAEXXZ @ 24 NONAME ; void CGetFormatCapabilities::ServiceL(void) - ?GetAllReferenceL@CMmMtpDpMetadataAccessWrapper@@QAEXPAVCMPXMedia@@AAVCDesC16Array@@@Z @ 25 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetAllReferenceL(class CMPXMedia *, class CDesC16Array &) - ??1CSetObjectPropList@@UAE@XZ @ 26 NONAME ; CSetObjectPropList::~CSetObjectPropList(void) - ?ServiceL@CSetObjectPropList@@MAEXXZ @ 27 NONAME ; void CSetObjectPropList::ServiceL(void) - ??0CMoveObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 28 NONAME ; CMoveObject::CMoveObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??0CRequestUnknown@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@@Z @ 29 NONAME ; CRequestUnknown::CRequestUnknown(class MMTPDataProviderFramework &, class MMTPConnection &) - ?ConstructL@CGetObjectPropList@@IAEXXZ @ 30 NONAME ; void CGetObjectPropList::ConstructL(void) - ??1CSendObject@@UAE@XZ @ 31 NONAME ; CSendObject::~CSendObject(void) - ?ServiceMetaDataFromWrapperL@CGetObjectPropValue@@IAEXGAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 32 NONAME ; void CGetObjectPropValue::ServiceMetaDataFromWrapperL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) - ?NewL@CGetObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 33 NONAME ; class MMmRequestProcessor * CGetObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??1CGetObjectPropValue@@UAE@XZ @ 34 NONAME ; CGetObjectPropValue::~CGetObjectPropValue(void) - ?CreateL@CMmMtpDpAccessSingleton@@SAXAAVMMTPDataProviderFramework@@@Z @ 35 NONAME ; void CMmMtpDpAccessSingleton::CreateL(class MMTPDataProviderFramework &) - ??1CGetFormatCapabilities@@UAE@XZ @ 36 NONAME ; CGetFormatCapabilities::~CGetFormatCapabilities(void) - ?ServiceL@CSetObjectReferences@@EAEXXZ @ 37 NONAME ; void CSetObjectReferences::ServiceL(void) - ?DoHandleDataIToRPhaseL@CRequestProcessor@@MAEHXZ @ 38 NONAME ; int CRequestProcessor::DoHandleDataIToRPhaseL(void) - ??0CGetObjectPropList@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 39 NONAME ; CGetObjectPropList::CGetObjectPropList(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?ConstructL@CCopyObject@@IAEXXZ @ 40 NONAME ; void CCopyObject::ConstructL(void) - ?SetMetaDataToWrapper@CPropertySettingUtility@@QAE?AW4TMTPResponseCode@@AAVMMmMtpDpConfig@@GAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 41 NONAME ; enum TMTPResponseCode CPropertySettingUtility::SetMetaDataToWrapper(class MMmMtpDpConfig &, unsigned short, class MMTPType &, class CMTPObjectMetaData const &) - ?ServiceL@CGetObjectPropValue@@MAEXXZ @ 42 NONAME ; void CGetObjectPropValue::ServiceL(void) - ??1CRenameObject@@UAE@XZ @ 43 NONAME ; CRenameObject::~CRenameObject(void) - ?Match@CRequestProcessor@@MBEHABVTMTPTypeEvent@@AAVMMTPConnection@@@Z @ 44 NONAME ; int CRequestProcessor::Match(class TMTPTypeEvent const &, class MMTPConnection &) const - ?DoHandleCompletingPhaseL@CSendObject@@MAEHXZ @ 45 NONAME ; int CSendObject::DoHandleCompletingPhaseL(void) - ?GetDrmStatus@MmMtpDpUtility@@SAHABVTDesC16@@@Z @ 46 NONAME ; int MmMtpDpUtility::GetDrmStatus(class TDesC16 const &) - ?RunL@CRenameObject@@MAEXXZ @ 47 NONAME ; void CRenameObject::RunL(void) - ??0CSetObjectReferences@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 48 NONAME ; CSetObjectReferences::CSetObjectReferences(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??0CRequestProcessor@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@HPBUTMTPRequestElementInfo@@@Z @ 49 NONAME ; CRequestProcessor::CRequestProcessor(class MMTPDataProviderFramework &, class MMTPConnection &, int, struct TMTPRequestElementInfo const *) - ?ServiceL@CSendObject@@MAEXXZ @ 50 NONAME ; void CSendObject::ServiceL(void) - ?Request@CRequestProcessor@@MBEABVTMTPTypeRequest@@XZ @ 51 NONAME ; class TMTPTypeRequest const & CRequestProcessor::Request(void) const - ?DoCancel@CRequestProcessor@@MAEXXZ @ 52 NONAME ; void CRequestProcessor::DoCancel(void) - ?CheckRequestL@CGetPartialObject@@MAE?AW4TMTPResponseCode@@XZ @ 53 NONAME ; enum TMTPResponseCode CGetPartialObject::CheckRequestL(void) - ?NewL@CRequestUnknown@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@@Z @ 54 NONAME ; class MMmRequestProcessor * CRequestUnknown::NewL(class MMTPDataProviderFramework &, class MMTPConnection &) - ??0CGetFormatCapabilities@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 55 NONAME ; CGetFormatCapabilities::CGetFormatCapabilities(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?ConstructL@CGetObjectInfo@@AAEXXZ @ 56 NONAME ; void CGetObjectInfo::ConstructL(void) - ?UsbDisconnect@CRequestProcessor@@MAEXXZ @ 57 NONAME ; void CRequestProcessor::UsbDisconnect(void) - ?UpdateMusicCollectionL@CMmMtpDpMetadataAccessWrapper@@QAEXXZ @ 58 NONAME ; void CMmMtpDpMetadataAccessWrapper::UpdateMusicCollectionL(void) - ??1CMoveObject@@UAE@XZ @ 59 NONAME ; CMoveObject::~CMoveObject(void) - ?CheckRequestL@CSendObject@@MAE?AW4TMTPResponseCode@@XZ @ 60 NONAME ; enum TMTPResponseCode CSendObject::CheckRequestL(void) - ??1CRequestProcessor@@MAE@XZ @ 61 NONAME ; CRequestProcessor::~CRequestProcessor(void) - ?DoCancel@CDeleteObject@@MAEXXZ @ 62 NONAME ; void CDeleteObject::DoCancel(void) - ??1CGetObject@@UAE@XZ @ 63 NONAME ; CGetObject::~CGetObject(void) - ?NewL@CGetInterdependentPropDesc@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 64 NONAME ; class MMmRequestProcessor * CGetInterdependentPropDesc::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?DoHandleResponsePhaseL@CSetObjectReferences@@EAEHXZ @ 65 NONAME ; int CSetObjectReferences::DoHandleResponsePhaseL(void) - ?GetAccessWrapperL@CMmMtpDpAccessSingleton@@SAAAVCMmMtpDpMetadataAccessWrapper@@XZ @ 66 NONAME ; class CMmMtpDpMetadataAccessWrapper & CMmMtpDpAccessSingleton::GetAccessWrapperL(void) - ??1CGetObjectPropsSupported@@UAE@XZ @ 67 NONAME ; CGetObjectPropsSupported::~CGetObjectPropsSupported(void) - ?CheckRequestL@CGetObjectPropList@@MAE?AW4TMTPResponseCode@@XZ @ 68 NONAME ; enum TMTPResponseCode CGetObjectPropList::CheckRequestL(void) - ?HasDataphase@CRequestProcessor@@MBEHXZ @ 69 NONAME ; int CRequestProcessor::HasDataphase(void) const - ?NewL@CGetObjectPropsSupported@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 70 NONAME ; class MMmRequestProcessor * CGetObjectPropsSupported::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?Connection@CRequestProcessor@@MBEAAVMMTPConnection@@XZ @ 71 NONAME ; class MMTPConnection & CRequestProcessor::Connection(void) const - ?ConstructL@CGetFormatCapabilities@@AAEXXZ @ 72 NONAME ; void CGetFormatCapabilities::ConstructL(void) - ??1CPropertySettingUtility@@UAE@XZ @ 73 NONAME ; CPropertySettingUtility::~CPropertySettingUtility(void) - ??1CGetPartialObject@@UAE@XZ @ 74 NONAME ; CGetPartialObject::~CGetPartialObject(void) - ?NewL@CGetObjectInfo@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 75 NONAME ; class MMmRequestProcessor * CGetObjectInfo::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?RunError@CSetObjectPropList@@MAEHH@Z @ 76 NONAME ; int CSetObjectPropList::RunError(int) - ?CheckRequestL@CGetInterdependentPropDesc@@MAE?AW4TMTPResponseCode@@XZ @ 77 NONAME ; enum TMTPResponseCode CGetInterdependentPropDesc::CheckRequestL(void) - ?Match@CRequestUnknown@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 78 NONAME ; int CRequestUnknown::Match(class TMTPTypeRequest const &, class MMTPConnection &) const - ?ServiceL@CMoveObject@@MAEXXZ @ 79 NONAME ; void CMoveObject::ServiceL(void) - ?CreateDummyFile@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 80 NONAME ; void CMmMtpDpMetadataAccessWrapper::CreateDummyFile(class TDesC16 const &) - ?CheckRequestL@CGetObjectPropDesc@@MAE?AW4TMTPResponseCode@@XZ @ 81 NONAME ; enum TMTPResponseCode CGetObjectPropDesc::CheckRequestL(void) - ?DoHandleRToIPhaseL@CRequestProcessor@@MAEHXZ @ 82 NONAME ; int CRequestProcessor::DoHandleRToIPhaseL(void) - ?ServiceMetaDataToWrapperL@CSetObjectPropValue@@IAE?AW4TMTPResponseCode@@GAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 83 NONAME ; enum TMTPResponseCode CSetObjectPropValue::ServiceMetaDataToWrapperL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) - ?NewCommonObjectPropertyL@CDescriptionUtility@@QAEPAVCMTPTypeObjectPropDesc@@G@Z @ 84 NONAME ; class CMTPTypeObjectPropDesc * CDescriptionUtility::NewCommonObjectPropertyL(unsigned short) - ?FormatFromFilename@MmMtpDpUtility@@SA?AW4TMTPFormatCode@@ABVTDesC16@@@Z @ 85 NONAME ; enum TMTPFormatCode MmMtpDpUtility::FormatFromFilename(class TDesC16 const &) - ?CheckRequestL@CSetObjectPropValue@@MAE?AW4TMTPResponseCode@@XZ @ 86 NONAME ; enum TMTPResponseCode CSetObjectPropValue::CheckRequestL(void) - ??0CPropertySettingUtility@@IAE@XZ @ 87 NONAME ; CPropertySettingUtility::CPropertySettingUtility(void) - ?Match@CRequestProcessor@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 88 NONAME ; int CRequestProcessor::Match(class TMTPTypeRequest const &, class MMTPConnection &) const - ??0CCopyObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 89 NONAME ; CCopyObject::CCopyObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?CheckRequestL@CRequestProcessor@@MAE?AW4TMTPResponseCode@@XZ @ 90 NONAME ; enum TMTPResponseCode CRequestProcessor::CheckRequestL(void) - ?SendResponseL@CRequestProcessor@@IAEXW4TMTPResponseCode@@HPAK@Z @ 91 NONAME ; void CRequestProcessor::SendResponseL(enum TMTPResponseCode, int, unsigned long *) - ??0CGetPartialObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@@Z @ 92 NONAME ; CGetPartialObject::CGetPartialObject(class MMTPDataProviderFramework &, class MMTPConnection &) - ?DoHandleCompletingPhaseL@CRequestProcessor@@MAEHXZ @ 93 NONAME ; int CRequestProcessor::DoHandleCompletingPhaseL(void) - ?DeleteDummyFile@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 94 NONAME ; void CMmMtpDpMetadataAccessWrapper::DeleteDummyFile(class TDesC16 const &) - ?DoSetObjectReferencesL@CSetObjectReferences@@IAEXABVCMTPObjectMetaData@@@Z @ 95 NONAME ; void CSetObjectReferences::DoSetObjectReferencesL(class CMTPObjectMetaData const &) - ??1CGetObjectInfo@@UAE@XZ @ 96 NONAME ; CGetObjectInfo::~CGetObjectInfo(void) - ?ServiceL@CRequestUnknown@@MAEXXZ @ 97 NONAME ; void CRequestUnknown::ServiceL(void) - ?HasDataphase@CSetObjectPropList@@MBEHXZ @ 98 NONAME ; int CSetObjectPropList::HasDataphase(void) const - ?NewL@CGetObjectReferences@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 99 NONAME ; class MMmRequestProcessor * CGetObjectReferences::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?DoCancel@CRenameObject@@MAEXXZ @ 100 NONAME ; void CRenameObject::DoCancel(void) - ??1CSetObjectReferences@@UAE@XZ @ 101 NONAME ; CSetObjectReferences::~CSetObjectReferences(void) - ?Match@CSendObject@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 102 NONAME ; int CSendObject::Match(class TMTPTypeRequest const &, class MMTPConnection &) const - ?NewL@CSetObjectPropList@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 103 NONAME ; class MMmRequestProcessor * CSetObjectPropList::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?GetAllAbstractMediaL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@PAPAVCMPXMediaArray@@W4TMPXGeneralCategory@@@Z @ 104 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetAllAbstractMediaL(class TDesC16 const &, class CMPXMediaArray * *, enum TMPXGeneralCategory) - ??1CCopyObject@@UAE@XZ @ 105 NONAME ; CCopyObject::~CCopyObject(void) - ?GetModifiedContentL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@AAHAAVCDesC16Array@@@Z @ 106 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetModifiedContentL(class TDesC16 const &, int &, class CDesC16Array &) + ?DeleteObjectL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@@Z @ 6 NONAME ; void CMmMtpDpMetadataAccessWrapper::DeleteObjectL(class CMTPObjectMetaData const &) + ?Release@CRequestProcessor@@MAEXXZ @ 7 NONAME ; void CRequestProcessor::Release(void) + ?HandleRequestL@CRequestProcessor@@MAEHABVTMTPTypeRequest@@W4TMTPTransactionPhase@@@Z @ 8 NONAME ; int CRequestProcessor::HandleRequestL(class TMTPTypeRequest const &, enum TMTPTransactionPhase) + ??1CGetInterdependentPropDesc@@UAE@XZ @ 9 NONAME ; CGetInterdependentPropDesc::~CGetInterdependentPropDesc(void) + ?OpenSessionL@CMmMtpDpAccessSingleton@@SAXXZ @ 10 NONAME ; void CMmMtpDpAccessSingleton::OpenSessionL(void) + ?ServiceL@CGetPartialObject@@MAEXXZ @ 11 NONAME ; void CGetPartialObject::ServiceL(void) + ??0CGetObjectInfo@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 12 NONAME ; CGetObjectInfo::CGetObjectInfo(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?DoHandleResponsePhaseL@CRequestProcessor@@MAEHXZ @ 13 NONAME ; int CRequestProcessor::DoHandleResponsePhaseL(void) + ?NewL@CGetObjectPropDesc@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 14 NONAME ; class MMmRequestProcessor * CGetObjectPropDesc::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??0CGetObjectPropValue@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 15 NONAME ; CGetObjectPropValue::CGetObjectPropValue(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?CheckRequestL@CSetObjectPropList@@MAE?AW4TMTPResponseCode@@XZ @ 16 NONAME ; enum TMTPResponseCode CSetObjectPropList::CheckRequestL(void) + ?RunL@CRequestProcessor@@MAEXXZ @ 17 NONAME ; void CRequestProcessor::RunL(void) + ?ServiceL@CDeleteObject@@MAEXXZ @ 18 NONAME ; void CDeleteObject::ServiceL(void) + ?DoCancel@CSetObjectPropList@@MAEXXZ @ 19 NONAME ; void CSetObjectPropList::DoCancel(void) + ?CleanupDatabaseL@CMmMtpDpMetadataAccessWrapper@@QAEXXZ @ 20 NONAME ; void CMmMtpDpMetadataAccessWrapper::CleanupDatabaseL(void) + ?ServiceL@CGetObjectPropsSupported@@MAEXXZ @ 21 NONAME ; void CGetObjectPropsSupported::ServiceL(void) + ?NewL@CSetObjectReferences@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 22 NONAME ; class MMmRequestProcessor * CSetObjectReferences::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?Release@CMmMtpDpAccessSingleton@@SAXXZ @ 23 NONAME ; void CMmMtpDpAccessSingleton::Release(void) + ?UsbDisconnect@CSendObject@@MAEXXZ @ 24 NONAME ; void CSendObject::UsbDisconnect(void) + ?ServiceL@CGetFormatCapabilities@@MAEXXZ @ 25 NONAME ; void CGetFormatCapabilities::ServiceL(void) + ?GetAllReferenceL@CMmMtpDpMetadataAccessWrapper@@QAEXPAVCMPXMedia@@AAVCDesC16Array@@@Z @ 26 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetAllReferenceL(class CMPXMedia *, class CDesC16Array &) + ??1CSetObjectPropList@@UAE@XZ @ 27 NONAME ; CSetObjectPropList::~CSetObjectPropList(void) + ?ServiceL@CSetObjectPropList@@MAEXXZ @ 28 NONAME ; void CSetObjectPropList::ServiceL(void) + ??0CMoveObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 29 NONAME ; CMoveObject::CMoveObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??0CRequestUnknown@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@@Z @ 30 NONAME ; CRequestUnknown::CRequestUnknown(class MMTPDataProviderFramework &, class MMTPConnection &) + ?ConstructL@CGetObjectPropList@@IAEXXZ @ 31 NONAME ; void CGetObjectPropList::ConstructL(void) + ??1CSendObject@@UAE@XZ @ 32 NONAME ; CSendObject::~CSendObject(void) + ?ServiceMetaDataFromWrapperL@CGetObjectPropValue@@IAEXGAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 33 NONAME ; void CGetObjectPropValue::ServiceMetaDataFromWrapperL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) + ?NewL@CGetObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 34 NONAME ; class MMmRequestProcessor * CGetObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??1CGetObjectPropValue@@UAE@XZ @ 35 NONAME ; CGetObjectPropValue::~CGetObjectPropValue(void) + ?CreateL@CMmMtpDpAccessSingleton@@SAXAAVMMTPDataProviderFramework@@@Z @ 36 NONAME ; void CMmMtpDpAccessSingleton::CreateL(class MMTPDataProviderFramework &) + ??1CGetFormatCapabilities@@UAE@XZ @ 37 NONAME ; CGetFormatCapabilities::~CGetFormatCapabilities(void) + ?ServiceL@CSetObjectReferences@@EAEXXZ @ 38 NONAME ; void CSetObjectReferences::ServiceL(void) + ?DoHandleDataIToRPhaseL@CRequestProcessor@@MAEHXZ @ 39 NONAME ; int CRequestProcessor::DoHandleDataIToRPhaseL(void) + ??0CGetObjectPropList@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 40 NONAME ; CGetObjectPropList::CGetObjectPropList(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?ConstructL@CCopyObject@@IAEXXZ @ 41 NONAME ; void CCopyObject::ConstructL(void) + ?SetMetaDataToWrapper@CPropertySettingUtility@@QAE?AW4TMTPResponseCode@@AAVMMmMtpDpConfig@@GAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 42 NONAME ; enum TMTPResponseCode CPropertySettingUtility::SetMetaDataToWrapper(class MMmMtpDpConfig &, unsigned short, class MMTPType &, class CMTPObjectMetaData const &) + ?ServiceL@CGetObjectPropValue@@MAEXXZ @ 43 NONAME ; void CGetObjectPropValue::ServiceL(void) + ??1CRenameObject@@UAE@XZ @ 44 NONAME ; CRenameObject::~CRenameObject(void) + ?Match@CRequestProcessor@@MBEHABVTMTPTypeEvent@@AAVMMTPConnection@@@Z @ 45 NONAME ; int CRequestProcessor::Match(class TMTPTypeEvent const &, class MMTPConnection &) const + ?DoHandleCompletingPhaseL@CSendObject@@MAEHXZ @ 46 NONAME ; int CSendObject::DoHandleCompletingPhaseL(void) + ?GetDrmStatus@MmMtpDpUtility@@SAHABVTDesC16@@@Z @ 47 NONAME ; int MmMtpDpUtility::GetDrmStatus(class TDesC16 const &) + ?RunL@CRenameObject@@MAEXXZ @ 48 NONAME ; void CRenameObject::RunL(void) + ??0CSetObjectReferences@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 49 NONAME ; CSetObjectReferences::CSetObjectReferences(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??0CRequestProcessor@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@HPBUTMTPRequestElementInfo@@@Z @ 50 NONAME ; CRequestProcessor::CRequestProcessor(class MMTPDataProviderFramework &, class MMTPConnection &, int, struct TMTPRequestElementInfo const *) + ?ServiceL@CSendObject@@MAEXXZ @ 51 NONAME ; void CSendObject::ServiceL(void) + ?Request@CRequestProcessor@@MBEABVTMTPTypeRequest@@XZ @ 52 NONAME ; class TMTPTypeRequest const & CRequestProcessor::Request(void) const + ?DoCancel@CRequestProcessor@@MAEXXZ @ 53 NONAME ; void CRequestProcessor::DoCancel(void) + ?CheckRequestL@CGetPartialObject@@MAE?AW4TMTPResponseCode@@XZ @ 54 NONAME ; enum TMTPResponseCode CGetPartialObject::CheckRequestL(void) + ?NewL@CRequestUnknown@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@@Z @ 55 NONAME ; class MMmRequestProcessor * CRequestUnknown::NewL(class MMTPDataProviderFramework &, class MMTPConnection &) + ??0CGetFormatCapabilities@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 56 NONAME ; CGetFormatCapabilities::CGetFormatCapabilities(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?ConstructL@CGetObjectInfo@@AAEXXZ @ 57 NONAME ; void CGetObjectInfo::ConstructL(void) + ?UsbDisconnect@CRequestProcessor@@MAEXXZ @ 58 NONAME ; void CRequestProcessor::UsbDisconnect(void) + ?UpdateMusicCollectionL@CMmMtpDpMetadataAccessWrapper@@QAEXXZ @ 59 NONAME ; void CMmMtpDpMetadataAccessWrapper::UpdateMusicCollectionL(void) + ??1CMoveObject@@UAE@XZ @ 60 NONAME ; CMoveObject::~CMoveObject(void) + ?CheckRequestL@CSendObject@@MAE?AW4TMTPResponseCode@@XZ @ 61 NONAME ; enum TMTPResponseCode CSendObject::CheckRequestL(void) + ??1CRequestProcessor@@MAE@XZ @ 62 NONAME ; CRequestProcessor::~CRequestProcessor(void) + ?DoCancel@CDeleteObject@@MAEXXZ @ 63 NONAME ; void CDeleteObject::DoCancel(void) + ??1CGetObject@@UAE@XZ @ 64 NONAME ; CGetObject::~CGetObject(void) + ?NewL@CGetInterdependentPropDesc@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 65 NONAME ; class MMmRequestProcessor * CGetInterdependentPropDesc::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?DoHandleResponsePhaseL@CSetObjectReferences@@EAEHXZ @ 66 NONAME ; int CSetObjectReferences::DoHandleResponsePhaseL(void) + ?GetAccessWrapperL@CMmMtpDpAccessSingleton@@SAAAVCMmMtpDpMetadataAccessWrapper@@XZ @ 67 NONAME ; class CMmMtpDpMetadataAccessWrapper & CMmMtpDpAccessSingleton::GetAccessWrapperL(void) + ??1CGetObjectPropsSupported@@UAE@XZ @ 68 NONAME ; CGetObjectPropsSupported::~CGetObjectPropsSupported(void) + ?CheckRequestL@CGetObjectPropList@@MAE?AW4TMTPResponseCode@@XZ @ 69 NONAME ; enum TMTPResponseCode CGetObjectPropList::CheckRequestL(void) + ?HasDataphase@CRequestProcessor@@MBEHXZ @ 70 NONAME ; int CRequestProcessor::HasDataphase(void) const + ?NewL@CGetObjectPropsSupported@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 71 NONAME ; class MMmRequestProcessor * CGetObjectPropsSupported::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?Connection@CRequestProcessor@@MBEAAVMMTPConnection@@XZ @ 72 NONAME ; class MMTPConnection & CRequestProcessor::Connection(void) const + ?ConstructL@CGetFormatCapabilities@@AAEXXZ @ 73 NONAME ; void CGetFormatCapabilities::ConstructL(void) + ??1CPropertySettingUtility@@UAE@XZ @ 74 NONAME ; CPropertySettingUtility::~CPropertySettingUtility(void) + ??1CGetPartialObject@@UAE@XZ @ 75 NONAME ; CGetPartialObject::~CGetPartialObject(void) + ?NewL@CGetObjectInfo@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 76 NONAME ; class MMmRequestProcessor * CGetObjectInfo::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?RunError@CSetObjectPropList@@MAEHH@Z @ 77 NONAME ; int CSetObjectPropList::RunError(int) + ?CheckRequestL@CGetInterdependentPropDesc@@MAE?AW4TMTPResponseCode@@XZ @ 78 NONAME ; enum TMTPResponseCode CGetInterdependentPropDesc::CheckRequestL(void) + ?Match@CRequestUnknown@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 79 NONAME ; int CRequestUnknown::Match(class TMTPTypeRequest const &, class MMTPConnection &) const + ?ServiceL@CMoveObject@@MAEXXZ @ 80 NONAME ; void CMoveObject::ServiceL(void) + ?CreateDummyFile@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 81 NONAME ; void CMmMtpDpMetadataAccessWrapper::CreateDummyFile(class TDesC16 const &) + ?CheckRequestL@CGetObjectPropDesc@@MAE?AW4TMTPResponseCode@@XZ @ 82 NONAME ; enum TMTPResponseCode CGetObjectPropDesc::CheckRequestL(void) + ?DoHandleRToIPhaseL@CRequestProcessor@@MAEHXZ @ 83 NONAME ; int CRequestProcessor::DoHandleRToIPhaseL(void) + ?ServiceMetaDataToWrapperL@CSetObjectPropValue@@IAE?AW4TMTPResponseCode@@GAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 84 NONAME ; enum TMTPResponseCode CSetObjectPropValue::ServiceMetaDataToWrapperL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) + ?NewCommonObjectPropertyL@CDescriptionUtility@@QAEPAVCMTPTypeObjectPropDesc@@G@Z @ 85 NONAME ; class CMTPTypeObjectPropDesc * CDescriptionUtility::NewCommonObjectPropertyL(unsigned short) + ?FormatFromFilename@MmMtpDpUtility@@SA?AW4TMTPFormatCode@@ABVTDesC16@@@Z @ 86 NONAME ; enum TMTPFormatCode MmMtpDpUtility::FormatFromFilename(class TDesC16 const &) + ?CheckRequestL@CSetObjectPropValue@@MAE?AW4TMTPResponseCode@@XZ @ 87 NONAME ; enum TMTPResponseCode CSetObjectPropValue::CheckRequestL(void) + ??0CPropertySettingUtility@@IAE@XZ @ 88 NONAME ; CPropertySettingUtility::CPropertySettingUtility(void) + ?Match@CRequestProcessor@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 89 NONAME ; int CRequestProcessor::Match(class TMTPTypeRequest const &, class MMTPConnection &) const + ??0CCopyObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 90 NONAME ; CCopyObject::CCopyObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?CheckRequestL@CRequestProcessor@@MAE?AW4TMTPResponseCode@@XZ @ 91 NONAME ; enum TMTPResponseCode CRequestProcessor::CheckRequestL(void) + ?SendResponseL@CRequestProcessor@@IAEXW4TMTPResponseCode@@HPAK@Z @ 92 NONAME ; void CRequestProcessor::SendResponseL(enum TMTPResponseCode, int, unsigned long *) + ??0CGetPartialObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@@Z @ 93 NONAME ; CGetPartialObject::CGetPartialObject(class MMTPDataProviderFramework &, class MMTPConnection &) + ?DoHandleCompletingPhaseL@CRequestProcessor@@MAEHXZ @ 94 NONAME ; int CRequestProcessor::DoHandleCompletingPhaseL(void) + ?DeleteDummyFile@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 95 NONAME ; void CMmMtpDpMetadataAccessWrapper::DeleteDummyFile(class TDesC16 const &) + ?DoSetObjectReferencesL@CSetObjectReferences@@IAEXABVCMTPObjectMetaData@@@Z @ 96 NONAME ; void CSetObjectReferences::DoSetObjectReferencesL(class CMTPObjectMetaData const &) + ??1CGetObjectInfo@@UAE@XZ @ 97 NONAME ; CGetObjectInfo::~CGetObjectInfo(void) + ?ServiceL@CRequestUnknown@@MAEXXZ @ 98 NONAME ; void CRequestUnknown::ServiceL(void) + ?HasDataphase@CSetObjectPropList@@MBEHXZ @ 99 NONAME ; int CSetObjectPropList::HasDataphase(void) const + ?NewL@CGetObjectReferences@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 100 NONAME ; class MMmRequestProcessor * CGetObjectReferences::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?DoCancel@CRenameObject@@MAEXXZ @ 101 NONAME ; void CRenameObject::DoCancel(void) + ??1CSetObjectReferences@@UAE@XZ @ 102 NONAME ; CSetObjectReferences::~CSetObjectReferences(void) + ?Match@CSendObject@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 103 NONAME ; int CSendObject::Match(class TMTPTypeRequest const &, class MMTPConnection &) const + ?NewL@CSetObjectPropList@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 104 NONAME ; class MMmRequestProcessor * CSetObjectPropList::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?GetAllAbstractMediaL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@PAPAVCMPXMediaArray@@W4TMPXGeneralCategory@@@Z @ 105 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetAllAbstractMediaL(class TDesC16 const &, class CMPXMediaArray * *, enum TMPXGeneralCategory) + ??1CCopyObject@@UAE@XZ @ 106 NONAME ; CCopyObject::~CCopyObject(void) ?RunL@CGetObjectPropList@@MAEXXZ @ 107 NONAME ; void CGetObjectPropList::RunL(void) - ?NewRangeFormDescriptionL@CDescriptionUtility@@QAEPAVCMTPTypeObjectPropDesc@@GKKKH@Z @ 108 NONAME ; class CMTPTypeObjectPropDesc * CDescriptionUtility::NewRangeFormDescriptionL(unsigned short, unsigned long, unsigned long, unsigned long, int) - ?RunError@CRequestProcessor@@MAEHH@Z @ 109 NONAME ; int CRequestProcessor::RunError(int) - ?SessionId@CRequestProcessor@@MAEKXZ @ 110 NONAME ; unsigned long CRequestProcessor::SessionId(void) - ??0CDescriptionUtility@@IAE@XZ @ 111 NONAME ; CDescriptionUtility::CDescriptionUtility(void) - ?HandleEventL@CRequestProcessor@@MAEXABVTMTPTypeEvent@@@Z @ 112 NONAME ; void CRequestProcessor::HandleEventL(class TMTPTypeEvent const &) - ?NewL@CGetPartialObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 113 NONAME ; class MMmRequestProcessor * CGetPartialObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?HasDataphase@CSetObjectReferences@@EBEHXZ @ 114 NONAME ; int CSetObjectReferences::HasDataphase(void) const - ?ConstructL@CGetInterdependentPropDesc@@IAEXXZ @ 115 NONAME ; void CGetInterdependentPropDesc::ConstructL(void) - ?RunError@CGetObjectPropList@@MAEHH@Z @ 116 NONAME ; int CGetObjectPropList::RunError(int) - ?DoHandleResponsePhaseL@CSetObjectPropList@@MAEHXZ @ 117 NONAME ; int CSetObjectPropList::DoHandleResponsePhaseL(void) - ??0CDeleteObject@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 118 NONAME ; CDeleteObject::CDeleteObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?NewL@CRenameObject@@SAPAV1@AAVMMTPDataProviderFramework@@AAVCMmMtpDpMetadataAccessWrapper@@@Z @ 119 NONAME ; class CRenameObject * CRenameObject::NewL(class MMTPDataProviderFramework &, class CMmMtpDpMetadataAccessWrapper &) - ?RenameObjectL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@ABVTDesC16@@@Z @ 120 NONAME ; void CMmMtpDpMetadataAccessWrapper::RenameObjectL(class CMTPObjectMetaData const &, class TDesC16 const &) - ?GetObjectMetadataValueL@CMmMtpDpMetadataAccessWrapper@@QAEXGAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 121 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetObjectMetadataValueL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) - ?AddDummyFileL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 122 NONAME ; void CMmMtpDpMetadataAccessWrapper::AddDummyFileL(class TDesC16 const &) - ??0CGetObjectPropDesc@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 123 NONAME ; CGetObjectPropDesc::CGetObjectPropDesc(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?ConstructL@CGetObjectPropDesc@@AAEXXZ @ 124 NONAME ; void CGetObjectPropDesc::ConstructL(void) - ??0CGetInterdependentPropDesc@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 125 NONAME ; CGetInterdependentPropDesc::CGetInterdependentPropDesc(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??1CGetObjectPropDesc@@UAE@XZ @ 126 NONAME ; CGetObjectPropDesc::~CGetObjectPropDesc(void) - ?ServiceL@CGetObjectPropDesc@@MAEXXZ @ 127 NONAME ; void CGetObjectPropDesc::ServiceL(void) - ?HasDataphase@CSetObjectPropValue@@MBEHXZ @ 128 NONAME ; int CSetObjectPropValue::HasDataphase(void) const - ?ServiceL@CCopyObject@@MAEXXZ @ 129 NONAME ; void CCopyObject::ServiceL(void) - ?CheckRequestL@CGetObjectPropValue@@MAE?AW4TMTPResponseCode@@XZ @ 130 NONAME ; enum TMTPResponseCode CGetObjectPropValue::CheckRequestL(void) - ?CloseSessionL@CMmMtpDpAccessSingleton@@SAXXZ @ 131 NONAME ; void CMmMtpDpAccessSingleton::CloseSessionL(void) - ?NewL@CGetFormatCapabilities@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 132 NONAME ; class MMmRequestProcessor * CGetFormatCapabilities::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?ReceiveDataL@CRequestProcessor@@IAEXAAVMMTPType@@@Z @ 133 NONAME ; void CRequestProcessor::ReceiveDataL(class MMTPType &) - ??1CDescriptionUtility@@UAE@XZ @ 134 NONAME ; CDescriptionUtility::~CDescriptionUtility(void) - ?RunL@CSetObjectPropList@@MAEXXZ @ 135 NONAME ; void CSetObjectPropList::RunL(void) - ?ConstructL@CMoveObject@@IAEXXZ @ 136 NONAME ; void CMoveObject::ConstructL(void) - ?NewL@CSendObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 137 NONAME ; class MMmRequestProcessor * CSendObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??1CGetObjectReferences@@UAE@XZ @ 138 NONAME ; CGetObjectReferences::~CGetObjectReferences(void) - ?HasDataphase@CSendObject@@MBEHXZ @ 139 NONAME ; int CSendObject::HasDataphase(void) const - ??1CSetObjectPropValue@@UAE@XZ @ 140 NONAME ; CSetObjectPropValue::~CSetObjectPropValue(void) - ?ConstructL@CRenameObject@@IAEXXZ @ 141 NONAME ; void CRenameObject::ConstructL(void) - ?SendDataL@CRequestProcessor@@IAEXABVMMTPType@@@Z @ 142 NONAME ; void CRequestProcessor::SendDataL(class MMTPType const &) - ?DoHandleResponsePhaseL@CSendObject@@MAEHXZ @ 143 NONAME ; int CSendObject::DoHandleResponsePhaseL(void) - ?SetReferenceL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@AAVCDesC16Array@@@Z @ 144 NONAME ; void CMmMtpDpMetadataAccessWrapper::SetReferenceL(class CMTPObjectMetaData const &, class CDesC16Array &) - ?DoCancel@CGetObjectPropList@@MAEXXZ @ 145 NONAME ; void CGetObjectPropList::DoCancel(void) - ?ServiceL@CGetInterdependentPropDesc@@MAEXXZ @ 146 NONAME ; void CGetInterdependentPropDesc::ServiceL(void) - ?DoHandleRequestPhaseL@CRequestProcessor@@MAEHXZ @ 147 NONAME ; int CRequestProcessor::DoHandleRequestPhaseL(void) - ?GetAbstractMediaNameL@CMmMtpDpMetadataAccessWrapper@@QAEPAVHBufC16@@PAVCMPXMedia@@W4TMPXGeneralCategory@@@Z @ 148 NONAME ; class HBufC16 * CMmMtpDpMetadataAccessWrapper::GetAbstractMediaNameL(class CMPXMedia *, enum TMPXGeneralCategory) - ?ServiceL@CSetObjectPropValue@@MAEXXZ @ 149 NONAME ; void CSetObjectPropValue::ServiceL(void) - ?RunError@CRenameObject@@MAEHH@Z @ 150 NONAME ; int CRenameObject::RunError(int) - ??1CDeleteObject@@UAE@XZ @ 151 NONAME ; CDeleteObject::~CDeleteObject(void) - ?DoHandleResponsePhaseL@CGetPartialObject@@MAEHXZ @ 152 NONAME ; int CGetPartialObject::DoHandleResponsePhaseL(void) - ?CheckRequestL@CGetFormatCapabilities@@MAE?AW4TMTPResponseCode@@XZ @ 153 NONAME ; enum TMTPResponseCode CGetFormatCapabilities::CheckRequestL(void) - ??0CSetObjectPropValue@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 154 NONAME ; CSetObjectPropValue::CSetObjectPropValue(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??1CGetObjectPropList@@UAE@XZ @ 155 NONAME ; CGetObjectPropList::~CGetObjectPropList(void) - ?ServiceL@CGetObjectPropList@@MAEXXZ @ 156 NONAME ; void CGetObjectPropList::ServiceL(void) - ??0CRenameObject@@IAE@AAVMMTPDataProviderFramework@@AAVCMmMtpDpMetadataAccessWrapper@@@Z @ 157 NONAME ; CRenameObject::CRenameObject(class MMTPDataProviderFramework &, class CMmMtpDpMetadataAccessWrapper &) + ?GetModifiedContentL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@AAHAAVCDesC16Array@@@Z @ 108 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetModifiedContentL(class TDesC16 const &, int &, class CDesC16Array &) + ?NewRangeFormDescriptionL@CDescriptionUtility@@QAEPAVCMTPTypeObjectPropDesc@@GKKKH@Z @ 109 NONAME ; class CMTPTypeObjectPropDesc * CDescriptionUtility::NewRangeFormDescriptionL(unsigned short, unsigned long, unsigned long, unsigned long, int) + ?RunError@CRequestProcessor@@MAEHH@Z @ 110 NONAME ; int CRequestProcessor::RunError(int) + ?SessionId@CRequestProcessor@@MAEKXZ @ 111 NONAME ; unsigned long CRequestProcessor::SessionId(void) + ??0CDescriptionUtility@@IAE@XZ @ 112 NONAME ; CDescriptionUtility::CDescriptionUtility(void) + ?HandleEventL@CRequestProcessor@@MAEXABVTMTPTypeEvent@@@Z @ 113 NONAME ; void CRequestProcessor::HandleEventL(class TMTPTypeEvent const &) + ?NewL@CGetPartialObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 114 NONAME ; class MMmRequestProcessor * CGetPartialObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?HasDataphase@CSetObjectReferences@@EBEHXZ @ 115 NONAME ; int CSetObjectReferences::HasDataphase(void) const + ?ConstructL@CGetInterdependentPropDesc@@IAEXXZ @ 116 NONAME ; void CGetInterdependentPropDesc::ConstructL(void) + ?RunError@CGetObjectPropList@@MAEHH@Z @ 117 NONAME ; int CGetObjectPropList::RunError(int) + ?DoHandleResponsePhaseL@CSetObjectPropList@@MAEHXZ @ 118 NONAME ; int CSetObjectPropList::DoHandleResponsePhaseL(void) + ??0CDeleteObject@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 119 NONAME ; CDeleteObject::CDeleteObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?NewL@CRenameObject@@SAPAV1@AAVMMTPDataProviderFramework@@AAVCMmMtpDpMetadataAccessWrapper@@@Z @ 120 NONAME ; class CRenameObject * CRenameObject::NewL(class MMTPDataProviderFramework &, class CMmMtpDpMetadataAccessWrapper &) + ?RenameObjectL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@ABVTDesC16@@@Z @ 121 NONAME ; void CMmMtpDpMetadataAccessWrapper::RenameObjectL(class CMTPObjectMetaData const &, class TDesC16 const &) + ?GetObjectMetadataValueL@CMmMtpDpMetadataAccessWrapper@@QAEXGAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 122 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetObjectMetadataValueL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) + ?AddDummyFileL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 123 NONAME ; void CMmMtpDpMetadataAccessWrapper::AddDummyFileL(class TDesC16 const &) + ??0CGetObjectPropDesc@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 124 NONAME ; CGetObjectPropDesc::CGetObjectPropDesc(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?ConstructL@CGetObjectPropDesc@@AAEXXZ @ 125 NONAME ; void CGetObjectPropDesc::ConstructL(void) + ??0CGetInterdependentPropDesc@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 126 NONAME ; CGetInterdependentPropDesc::CGetInterdependentPropDesc(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??1CGetObjectPropDesc@@UAE@XZ @ 127 NONAME ; CGetObjectPropDesc::~CGetObjectPropDesc(void) + ?ServiceL@CGetObjectPropDesc@@MAEXXZ @ 128 NONAME ; void CGetObjectPropDesc::ServiceL(void) + ?HasDataphase@CSetObjectPropValue@@MBEHXZ @ 129 NONAME ; int CSetObjectPropValue::HasDataphase(void) const + ?ServiceL@CCopyObject@@MAEXXZ @ 130 NONAME ; void CCopyObject::ServiceL(void) + ?CheckRequestL@CGetObjectPropValue@@MAE?AW4TMTPResponseCode@@XZ @ 131 NONAME ; enum TMTPResponseCode CGetObjectPropValue::CheckRequestL(void) + ?CloseSessionL@CMmMtpDpAccessSingleton@@SAXXZ @ 132 NONAME ; void CMmMtpDpAccessSingleton::CloseSessionL(void) + ?NewL@CGetFormatCapabilities@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 133 NONAME ; class MMmRequestProcessor * CGetFormatCapabilities::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?ReceiveDataL@CRequestProcessor@@IAEXAAVMMTPType@@@Z @ 134 NONAME ; void CRequestProcessor::ReceiveDataL(class MMTPType &) + ??1CDescriptionUtility@@UAE@XZ @ 135 NONAME ; CDescriptionUtility::~CDescriptionUtility(void) + ?RunL@CSetObjectPropList@@MAEXXZ @ 136 NONAME ; void CSetObjectPropList::RunL(void) + ?ConstructL@CMoveObject@@IAEXXZ @ 137 NONAME ; void CMoveObject::ConstructL(void) + ?NewL@CSendObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 138 NONAME ; class MMmRequestProcessor * CSendObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??1CGetObjectReferences@@UAE@XZ @ 139 NONAME ; CGetObjectReferences::~CGetObjectReferences(void) + ?HasDataphase@CSendObject@@MBEHXZ @ 140 NONAME ; int CSendObject::HasDataphase(void) const + ??1CSetObjectPropValue@@UAE@XZ @ 141 NONAME ; CSetObjectPropValue::~CSetObjectPropValue(void) + ?ConstructL@CRenameObject@@IAEXXZ @ 142 NONAME ; void CRenameObject::ConstructL(void) + ?SendDataL@CRequestProcessor@@IAEXABVMMTPType@@@Z @ 143 NONAME ; void CRequestProcessor::SendDataL(class MMTPType const &) + ?DoHandleResponsePhaseL@CSendObject@@MAEHXZ @ 144 NONAME ; int CSendObject::DoHandleResponsePhaseL(void) + ?SetReferenceL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@AAVCDesC16Array@@@Z @ 145 NONAME ; void CMmMtpDpMetadataAccessWrapper::SetReferenceL(class CMTPObjectMetaData const &, class CDesC16Array &) + ?DoCancel@CGetObjectPropList@@MAEXXZ @ 146 NONAME ; void CGetObjectPropList::DoCancel(void) + ?ServiceL@CGetInterdependentPropDesc@@MAEXXZ @ 147 NONAME ; void CGetInterdependentPropDesc::ServiceL(void) + ?DoHandleRequestPhaseL@CRequestProcessor@@MAEHXZ @ 148 NONAME ; int CRequestProcessor::DoHandleRequestPhaseL(void) + ?GetAbstractMediaNameL@CMmMtpDpMetadataAccessWrapper@@QAEPAVHBufC16@@PAVCMPXMedia@@W4TMPXGeneralCategory@@@Z @ 149 NONAME ; class HBufC16 * CMmMtpDpMetadataAccessWrapper::GetAbstractMediaNameL(class CMPXMedia *, enum TMPXGeneralCategory) + ?ServiceL@CSetObjectPropValue@@MAEXXZ @ 150 NONAME ; void CSetObjectPropValue::ServiceL(void) + ?RunError@CRenameObject@@MAEHH@Z @ 151 NONAME ; int CRenameObject::RunError(int) + ??1CDeleteObject@@UAE@XZ @ 152 NONAME ; CDeleteObject::~CDeleteObject(void) + ?DoHandleResponsePhaseL@CGetPartialObject@@MAEHXZ @ 153 NONAME ; int CGetPartialObject::DoHandleResponsePhaseL(void) + ?CheckRequestL@CGetFormatCapabilities@@MAE?AW4TMTPResponseCode@@XZ @ 154 NONAME ; enum TMTPResponseCode CGetFormatCapabilities::CheckRequestL(void) + ??0CSetObjectPropValue@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 155 NONAME ; CSetObjectPropValue::CSetObjectPropValue(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??1CGetObjectPropList@@UAE@XZ @ 156 NONAME ; CGetObjectPropList::~CGetObjectPropList(void) + ?ServiceL@CGetObjectPropList@@MAEXXZ @ 157 NONAME ; void CGetObjectPropList::ServiceL(void) + ??0CRenameObject@@IAE@AAVMMTPDataProviderFramework@@AAVCMmMtpDpMetadataAccessWrapper@@@Z @ 158 NONAME ; CRenameObject::CRenameObject(class MMTPDataProviderFramework &, class CMmMtpDpMetadataAccessWrapper &) diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/eabi/mmmtpdprequestprocessoru.def --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/eabi/mmmtpdprequestprocessoru.def Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/eabi/mmmtpdprequestprocessoru.def Wed Apr 14 16:28:17 2010 +0300 @@ -183,96 +183,97 @@ _ZN26CGetInterdependentPropDescD1Ev @ 182 NONAME _ZN26CGetInterdependentPropDescD2Ev @ 183 NONAME _ZN29CMmMtpDpMetadataAccessWrapper13AddDummyFileLERK7TDesC16 @ 184 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper13RenameObjectLERK18CMTPObjectMetaDataRK7TDesC16 @ 185 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper13SetReferenceLERK18CMTPObjectMetaDataR12CDesC16Array @ 186 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper15CreateDummyFileERK7TDesC16 @ 187 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper15DeleteDummyFileERK7TDesC16 @ 188 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper16CleanupDatabaseLEv @ 189 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper16GetAllReferenceLEP9CMPXMediaR12CDesC16Array @ 190 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper19GetModifiedContentLERK7TDesC16RiR12CDesC16Array @ 191 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper20GetAllAbstractMediaLERK7TDesC16PP14CMPXMediaArray19TMPXGeneralCategory @ 192 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper21GetAbstractMediaNameLEP9CMPXMedia19TMPXGeneralCategory @ 193 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper22UpdateMusicCollectionLEv @ 194 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper23GetObjectMetadataValueLEtR8MMTPTypeRK18CMTPObjectMetaData @ 195 NONAME - _ZNK11CSendObject12HasDataphaseEv @ 196 NONAME - _ZNK11CSendObject5MatchERK15TMTPTypeRequestR14MMTPConnection @ 197 NONAME - _ZNK15CRequestUnknown5MatchERK15TMTPTypeRequestR14MMTPConnection @ 198 NONAME - _ZNK17CRequestProcessor10ConnectionEv @ 199 NONAME - _ZNK17CRequestProcessor12HasDataphaseEv @ 200 NONAME - _ZNK17CRequestProcessor5MatchERK13TMTPTypeEventR14MMTPConnection @ 201 NONAME - _ZNK17CRequestProcessor5MatchERK15TMTPTypeRequestR14MMTPConnection @ 202 NONAME - _ZNK17CRequestProcessor7RequestEv @ 203 NONAME - _ZNK18CSetObjectPropList12HasDataphaseEv @ 204 NONAME - _ZNK19CSetObjectPropValue12HasDataphaseEv @ 205 NONAME - _ZNK20CSetObjectReferences12HasDataphaseEv @ 206 NONAME - _ZTI10CGetObject @ 207 NONAME - _ZTI11CCopyObject @ 208 NONAME - _ZTI11CMoveObject @ 209 NONAME - _ZTI11CSendObject @ 210 NONAME - _ZTI13CDeleteObject @ 211 NONAME - _ZTI13CRenameObject @ 212 NONAME - _ZTI14CGetObjectInfo @ 213 NONAME - _ZTI15CRequestChecker @ 214 NONAME - _ZTI15CRequestUnknown @ 215 NONAME - _ZTI15TMTPTypeFlatBuf @ 216 NONAME - _ZTI17CGetPartialObject @ 217 NONAME - _ZTI17CRequestProcessor @ 218 NONAME - _ZTI18CGetObjectPropDesc @ 219 NONAME - _ZTI18CGetObjectPropList @ 220 NONAME - _ZTI18CHXMetaDataUtility @ 221 NONAME - _ZTI18CSetObjectPropList @ 222 NONAME - _ZTI19CDescriptionUtility @ 223 NONAME - _ZTI19CGetObjectPropValue @ 224 NONAME - _ZTI19CSetObjectPropValue @ 225 NONAME - _ZTI20CGetObjectReferences @ 226 NONAME - _ZTI20CSetObjectReferences @ 227 NONAME - _ZTI22CGetFormatCapabilities @ 228 NONAME - _ZTI23CMmMtpDpAccessSingleton @ 229 NONAME - _ZTI23CPropertySettingUtility @ 230 NONAME - _ZTI24CGetObjectPropsSupported @ 231 NONAME - _ZTI25CMmMtpDpMetadataMpxAccess @ 232 NONAME - _ZTI26CGetInterdependentPropDesc @ 233 NONAME - _ZTI27CMmMtpDpMetadataVideoAccess @ 234 NONAME - _ZTI29CMmMtpDpMetadataAccessWrapper @ 235 NONAME - _ZTV10CGetObject @ 236 NONAME - _ZTV11CCopyObject @ 237 NONAME - _ZTV11CMoveObject @ 238 NONAME - _ZTV11CSendObject @ 239 NONAME - _ZTV13CDeleteObject @ 240 NONAME - _ZTV13CRenameObject @ 241 NONAME - _ZTV14CGetObjectInfo @ 242 NONAME - _ZTV15CRequestChecker @ 243 NONAME - _ZTV15CRequestUnknown @ 244 NONAME - _ZTV15TMTPTypeFlatBuf @ 245 NONAME - _ZTV17CGetPartialObject @ 246 NONAME - _ZTV17CRequestProcessor @ 247 NONAME - _ZTV18CGetObjectPropDesc @ 248 NONAME - _ZTV18CGetObjectPropList @ 249 NONAME - _ZTV18CHXMetaDataUtility @ 250 NONAME - _ZTV18CSetObjectPropList @ 251 NONAME - _ZTV19CDescriptionUtility @ 252 NONAME - _ZTV19CGetObjectPropValue @ 253 NONAME - _ZTV19CSetObjectPropValue @ 254 NONAME - _ZTV20CGetObjectReferences @ 255 NONAME - _ZTV20CSetObjectReferences @ 256 NONAME - _ZTV22CGetFormatCapabilities @ 257 NONAME - _ZTV23CMmMtpDpAccessSingleton @ 258 NONAME - _ZTV23CPropertySettingUtility @ 259 NONAME - _ZTV24CGetObjectPropsSupported @ 260 NONAME - _ZTV25CMmMtpDpMetadataMpxAccess @ 261 NONAME - _ZTV26CGetInterdependentPropDesc @ 262 NONAME - _ZTV27CMmMtpDpMetadataVideoAccess @ 263 NONAME - _ZTV29CMmMtpDpMetadataAccessWrapper @ 264 NONAME - _ZThn28_N11CSendObject13UsbDisconnectEv @ 265 NONAME - _ZThn28_N17CRequestProcessor12HandleEventLERK13TMTPTypeEvent @ 266 NONAME - _ZThn28_N17CRequestProcessor13UsbDisconnectEv @ 267 NONAME - _ZThn28_N17CRequestProcessor14HandleRequestLERK15TMTPTypeRequest20TMTPTransactionPhase @ 268 NONAME - _ZThn28_N17CRequestProcessor7ReleaseEv @ 269 NONAME - _ZThn28_N17CRequestProcessor9SessionIdEv @ 270 NONAME - _ZThn28_NK11CSendObject5MatchERK15TMTPTypeRequestR14MMTPConnection @ 271 NONAME - _ZThn28_NK15CRequestUnknown5MatchERK15TMTPTypeRequestR14MMTPConnection @ 272 NONAME - _ZThn28_NK17CRequestProcessor10ConnectionEv @ 273 NONAME - _ZThn28_NK17CRequestProcessor5MatchERK13TMTPTypeEventR14MMTPConnection @ 274 NONAME - _ZThn28_NK17CRequestProcessor5MatchERK15TMTPTypeRequestR14MMTPConnection @ 275 NONAME - _ZThn28_NK17CRequestProcessor7RequestEv @ 276 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper13DeleteObjectLERK18CMTPObjectMetaData @ 185 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper13RenameObjectLERK18CMTPObjectMetaDataRK7TDesC16 @ 186 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper13SetReferenceLERK18CMTPObjectMetaDataR12CDesC16Array @ 187 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper15CreateDummyFileERK7TDesC16 @ 188 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper15DeleteDummyFileERK7TDesC16 @ 189 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper16CleanupDatabaseLEv @ 190 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper16GetAllReferenceLEP9CMPXMediaR12CDesC16Array @ 191 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper19GetModifiedContentLERK7TDesC16RiR12CDesC16Array @ 192 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper20GetAllAbstractMediaLERK7TDesC16PP14CMPXMediaArray19TMPXGeneralCategory @ 193 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper21GetAbstractMediaNameLEP9CMPXMedia19TMPXGeneralCategory @ 194 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper22UpdateMusicCollectionLEv @ 195 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper23GetObjectMetadataValueLEtR8MMTPTypeRK18CMTPObjectMetaData @ 196 NONAME + _ZNK11CSendObject12HasDataphaseEv @ 197 NONAME + _ZNK11CSendObject5MatchERK15TMTPTypeRequestR14MMTPConnection @ 198 NONAME + _ZNK15CRequestUnknown5MatchERK15TMTPTypeRequestR14MMTPConnection @ 199 NONAME + _ZNK17CRequestProcessor10ConnectionEv @ 200 NONAME + _ZNK17CRequestProcessor12HasDataphaseEv @ 201 NONAME + _ZNK17CRequestProcessor5MatchERK13TMTPTypeEventR14MMTPConnection @ 202 NONAME + _ZNK17CRequestProcessor5MatchERK15TMTPTypeRequestR14MMTPConnection @ 203 NONAME + _ZNK17CRequestProcessor7RequestEv @ 204 NONAME + _ZNK18CSetObjectPropList12HasDataphaseEv @ 205 NONAME + _ZNK19CSetObjectPropValue12HasDataphaseEv @ 206 NONAME + _ZNK20CSetObjectReferences12HasDataphaseEv @ 207 NONAME + _ZTI10CGetObject @ 208 NONAME + _ZTI11CCopyObject @ 209 NONAME + _ZTI11CMoveObject @ 210 NONAME + _ZTI11CSendObject @ 211 NONAME + _ZTI13CDeleteObject @ 212 NONAME + _ZTI13CRenameObject @ 213 NONAME + _ZTI14CGetObjectInfo @ 214 NONAME + _ZTI15CRequestChecker @ 215 NONAME + _ZTI15CRequestUnknown @ 216 NONAME + _ZTI15TMTPTypeFlatBuf @ 217 NONAME + _ZTI17CGetPartialObject @ 218 NONAME + _ZTI17CRequestProcessor @ 219 NONAME + _ZTI18CGetObjectPropDesc @ 220 NONAME + _ZTI18CGetObjectPropList @ 221 NONAME + _ZTI18CHXMetaDataUtility @ 222 NONAME + _ZTI18CSetObjectPropList @ 223 NONAME + _ZTI19CDescriptionUtility @ 224 NONAME + _ZTI19CGetObjectPropValue @ 225 NONAME + _ZTI19CSetObjectPropValue @ 226 NONAME + _ZTI20CGetObjectReferences @ 227 NONAME + _ZTI20CSetObjectReferences @ 228 NONAME + _ZTI22CGetFormatCapabilities @ 229 NONAME + _ZTI23CMmMtpDpAccessSingleton @ 230 NONAME + _ZTI23CPropertySettingUtility @ 231 NONAME + _ZTI24CGetObjectPropsSupported @ 232 NONAME + _ZTI25CMmMtpDpMetadataMpxAccess @ 233 NONAME + _ZTI26CGetInterdependentPropDesc @ 234 NONAME + _ZTI27CMmMtpDpMetadataVideoAccess @ 235 NONAME + _ZTI29CMmMtpDpMetadataAccessWrapper @ 236 NONAME + _ZTV10CGetObject @ 237 NONAME + _ZTV11CCopyObject @ 238 NONAME + _ZTV11CMoveObject @ 239 NONAME + _ZTV11CSendObject @ 240 NONAME + _ZTV13CDeleteObject @ 241 NONAME + _ZTV13CRenameObject @ 242 NONAME + _ZTV14CGetObjectInfo @ 243 NONAME + _ZTV15CRequestChecker @ 244 NONAME + _ZTV15CRequestUnknown @ 245 NONAME + _ZTV15TMTPTypeFlatBuf @ 246 NONAME + _ZTV17CGetPartialObject @ 247 NONAME + _ZTV17CRequestProcessor @ 248 NONAME + _ZTV18CGetObjectPropDesc @ 249 NONAME + _ZTV18CGetObjectPropList @ 250 NONAME + _ZTV18CHXMetaDataUtility @ 251 NONAME + _ZTV18CSetObjectPropList @ 252 NONAME + _ZTV19CDescriptionUtility @ 253 NONAME + _ZTV19CGetObjectPropValue @ 254 NONAME + _ZTV19CSetObjectPropValue @ 255 NONAME + _ZTV20CGetObjectReferences @ 256 NONAME + _ZTV20CSetObjectReferences @ 257 NONAME + _ZTV22CGetFormatCapabilities @ 258 NONAME + _ZTV23CMmMtpDpAccessSingleton @ 259 NONAME + _ZTV23CPropertySettingUtility @ 260 NONAME + _ZTV24CGetObjectPropsSupported @ 261 NONAME + _ZTV25CMmMtpDpMetadataMpxAccess @ 262 NONAME + _ZTV26CGetInterdependentPropDesc @ 263 NONAME + _ZTV27CMmMtpDpMetadataVideoAccess @ 264 NONAME + _ZTV29CMmMtpDpMetadataAccessWrapper @ 265 NONAME + _ZThn28_N11CSendObject13UsbDisconnectEv @ 266 NONAME + _ZThn28_N17CRequestProcessor12HandleEventLERK13TMTPTypeEvent @ 267 NONAME + _ZThn28_N17CRequestProcessor13UsbDisconnectEv @ 268 NONAME + _ZThn28_N17CRequestProcessor14HandleRequestLERK15TMTPTypeRequest20TMTPTransactionPhase @ 269 NONAME + _ZThn28_N17CRequestProcessor7ReleaseEv @ 270 NONAME + _ZThn28_N17CRequestProcessor9SessionIdEv @ 271 NONAME + _ZThn28_NK11CSendObject5MatchERK15TMTPTypeRequestR14MMTPConnection @ 272 NONAME + _ZThn28_NK15CRequestUnknown5MatchERK15TMTPTypeRequestR14MMTPConnection @ 273 NONAME + _ZThn28_NK17CRequestProcessor10ConnectionEv @ 274 NONAME + _ZThn28_NK17CRequestProcessor5MatchERK13TMTPTypeEventR14MMTPConnection @ 275 NONAME + _ZThn28_NK17CRequestProcessor5MatchERK15TMTPTypeRequestR14MMTPConnection @ 276 NONAME + _ZThn28_NK17CRequestProcessor7RequestEv @ 277 NONAME diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cmoveobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cmoveobject.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cmoveobject.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -22,6 +22,7 @@ #include #include #include +#include #include "cmoveobject.h" #include "mmmtpdplogger.h" @@ -141,7 +142,7 @@ newObjectName.CleanupClosePushL(); // + newObjectName newObjectName = *iDest; - const TDesC& suid( iObjectInfo->DesC( CMTPObjectMetaData::ESuid ) ); + TPtrC suid( iObjectInfo->DesC( CMTPObjectMetaData::ESuid ) ); TParsePtrC fileNameParser( suid ); if ( ( newObjectName.Length() + fileNameParser.NameAndExt().Length() ) <= newObjectName.MaxLength() ) @@ -419,7 +420,7 @@ TUint32 handle = element.Uint32L( CMTPTypeObjectPropListElement::EObjectHandle ); TUint16 propertyCode = element.Uint16L( CMTPTypeObjectPropListElement::EPropertyCode ); TUint16 dataType = element.Uint16L( CMTPTypeObjectPropListElement::EDatatype ); - PRINT3( _L( "MM MTP <> CCopyObject::SetPreviousPropertiesL = 0x%x, propertyCode = 0x%x, dataType = 0x%x" ), + PRINT3( _L( "MM MTP <> CMoveObject::SetPreviousPropertiesL = 0x%x, propertyCode = 0x%x, dataType = 0x%x" ), handle, propertyCode, dataType ); @@ -492,32 +493,45 @@ { // This is used to keep the same behavior in mass storage and device file manager. PRINT( _L( "MM MTP <> CMoveObject::SetPropertiesL Playlist file do not update the MPX DB" ) ); - } - else - // TODO: Need rollback mechanism for consistant with image dp in fw. - // Not sure if it should be trap if something wrong with MPX db. - { - if ( iSameStorage ) - { - iDpConfig.GetWrapperL().RenameObjectL( *iObjectInfo, aNewFileName ); - } - else // if the two object in different storage, we should delete the old one and insert new one - { - iDpConfig.GetWrapperL().DeleteObjectL( *iObjectInfo ); - iDpConfig.GetWrapperL().AddObjectL( *iObjectInfo ); - - // Only leave when getting proplist element from data received by fw. - // It should not happen after ReceiveDataL in which construction of proplist already succeed. - SetPreviousPropertiesL(); - } + iDpConfig.GetWrapperL().DeleteDummyFile( iObjectInfo->DesC( CMTPObjectMetaData::ESuid ) ); + iDpConfig.GetWrapperL().AddDummyFileL( aNewFileName ); } - iObjectInfo->SetDesCL( CMTPObjectMetaData::ESuid, aNewFileName ); - iObjectInfo->SetUint( CMTPObjectMetaData::EStorageId, iStorageId ); - iObjectInfo->SetUint( CMTPObjectMetaData::EParentHandle, iNewParentHandle ); - iFramework.ObjectMgr().ModifyObjectL( *iObjectInfo ); + if (iSameStorage) + { + iDpConfig.GetWrapperL().RenameObjectL( *iObjectInfo, aNewFileName ); + iObjectInfo->SetDesCL( CMTPObjectMetaData::ESuid, aNewFileName ); + iObjectInfo->SetUint( CMTPObjectMetaData::EStorageId, iStorageId ); + iObjectInfo->SetUint( CMTPObjectMetaData::EParentHandle, iNewParentHandle ); + iFramework.ObjectMgr().ModifyObjectL( *iObjectInfo ); + } + else // if the two object in different storage, we should delete the old one and insert new one + { + iDpConfig.GetWrapperL().DeleteObjectL( *iObjectInfo ); + + HBufC* oldFileName = iObjectInfo->DesC(CMTPObjectMetaData::ESuid).AllocLC(); // + oldFileName + iObjectInfo->SetDesCL( CMTPObjectMetaData::ESuid, aNewFileName ); + iObjectInfo->SetUint( CMTPObjectMetaData::EStorageId, iStorageId ); + iObjectInfo->SetUint( CMTPObjectMetaData::EParentHandle, iNewParentHandle ); + iFramework.ObjectMgr().ModifyObjectL(*iObjectInfo); - // It's not necessary to change references of playlists since Reference DB is used PUID + iDpConfig.GetWrapperL().SetStorageRootL( aNewFileName ); + iDpConfig.GetWrapperL().AddObjectL( *iObjectInfo ); + + if ( formatCode == EMTPFormatCodeAbstractAudioVideoPlaylist + || formatCode == EMTPFormatCodeAbstractAudioAlbum ) + { + MMTPReferenceMgr& referenceMgr = iFramework.ReferenceMgr(); + CDesCArray* references = referenceMgr.ReferencesLC( aNewFileName ); // + references + iDpConfig.GetWrapperL().SetReferenceL( *iObjectInfo, *references ); + CleanupStack::PopAndDestroy( references ); // - references + } + CleanupStack::PopAndDestroy( oldFileName ); // - oldFileName + + // Only leave when getting proplist element from data received by fw. + // It should not happen after ReceiveDataL in which construction of proplist already succeed. + SetPreviousPropertiesL(); + } PRINT( _L( "MM MTP <= CMoveObject::SetPropertiesL" ) ); } diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/crenameobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/crenameobject.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/crenameobject.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -145,12 +145,13 @@ if ( iNewFolderName.Length() + iRightPartName.Length() <= KMaxFileName ) { - PerformAdditionalActionL(); - iFileName.Zero(); iFileName.Append( iNewFolderName ); iFileName.Append( iRightPartName ); PRINT1( _L( "MM MTP <> CRenameObject::RunL new file name(%S)" ), &iFileName ); + + PerformAdditionalActionL(); + // update framework metadata DB iObjectInfo->SetDesCL( CMTPObjectMetaData::ESuid, iFileName ); iObjectInfo->SetUint( CMTPObjectMetaData::EObjectMetaDataUpdate, 1 ); diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csendobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csendobject.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csendobject.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -1322,9 +1322,9 @@ void CSendObject::Rollback() { // Delete this object from file system. - if ( iProgress == ESendObjectInProgress - || iProgress == EObjectInfoSucceed - ||iProgress == EObjectInfoFail ) + if ( iProgress == ESendObjectInProgress ) + // || iProgress == EObjectInfoSucceed // this line is to be commented out until SetSize is done in SendObjectInfo/SendObjectPropList + //||iProgress == EObjectInfoFail ) { PRINT1( _L( "MM MTP <> CSendObject::Rollback ROLLBACK_FILE %S" ), &iFullPath ); // Close the interrupted transfer file by delete iFileReceived object diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadataaccesswrapper.cpp --- a/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadataaccesswrapper.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadataaccesswrapper.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -259,7 +259,7 @@ // Deletes metadata information associated with the object // --------------------------------------------------------------------------- // -void CMmMtpDpMetadataAccessWrapper::DeleteObjectL( const CMTPObjectMetaData& aObject ) +EXPORT_C void CMmMtpDpMetadataAccessWrapper::DeleteObjectL( const CMTPObjectMetaData& aObject ) { TPtrC fileName( aObject.DesC( CMTPObjectMetaData::ESuid ) ); PRINT1( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::DeleteObjectL name = %S" ), &fileName ); diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp --- a/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -668,7 +668,6 @@ CMPXMedia& aMediaProp ) { PRINT1( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::SetMetadataValueL aPropCode = 0x%x" ), aPropCode ); - CMTPTypeString* textData = CMTPTypeString::NewLC(); // + textData CMTPTypeArray* desData = NULL; TMTPTypeUint16 uint16Data; TMTPTypeUint32 uint32Data; @@ -684,14 +683,12 @@ case EMTPObjectPropCodeComposer: case EMTPObjectPropCodeAlbumArtist: { - PRINT1( _L( "MM MTP <> SetMetadataValueL Before Copy, string length = %d" ), aNewData.Size() ); - MMTPType::CopyL( aNewData, *textData ); - PRINT1( _L( "MM MTP <> SetMetadataValueL string length = %d" ), textData->StringChars().Length() ); - aMediaProp.SetTextValueL( attrib, textData->StringChars() ); - HBufC* log = textData->StringChars().AllocL(); - PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL string = %S" ), log ); - delete log; - log = NULL; + const CMTPTypeString& textData = static_cast( aNewData ); + HBufC* string = textData.StringChars().AllocLC(); // + string + PRINT2( _L( "MM MTP <> SetMetadataValueL des.ptr() = 0x%x, string length = %d" ),string->Des().Ptr(), string->Des().Length() ); + PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL string = %S" ), string ); + aMediaProp.SetTextValueL( attrib, string->Des() ); + CleanupStack::PopAndDestroy( string ); // - string } break; @@ -735,10 +732,10 @@ case EMTPObjectPropCodeOriginalReleaseDate: { - MMTPType::CopyL( aNewData, *textData ); + const CMTPTypeString& textData = static_cast( aNewData ); TBuf data; - data.Copy( textData->StringChars().Left( KMtpMaxDateTimeStringLength ) ); + data.Copy( textData.StringChars().Left( KMtpMaxDateTimeStringLength ) ); PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL 0xDC99 date = %S" ), &data ); if ( data.Length() < KMtpMaxDateTimeStringLength ) @@ -821,23 +818,18 @@ TUint length = desData->NumElements(); PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL length = %d" ), length ); - if ( length != 0 ) - { - length = ( length < KMTPMaxDescriptionLen ) ? length : KMTPMaxDescriptionLen; - HBufC* text = HBufC::NewLC( length ); // + text - TPtr ptr = text->Des(); + + length = ( length < KMTPMaxDescriptionLen ) ? length : KMTPMaxDescriptionLen; + HBufC* text = HBufC::NewLC( length ); // + text + TPtr ptr = text->Des(); - for ( TUint i = 0; i < length; i++ ) - ptr.Append( desData->ElementUint( i ) ); - PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL text = %S" ), - text ); - aMediaProp.SetTextValueL( KMPXMediaGeneralComment, *text ); - CleanupStack::PopAndDestroy( text ); // - text - } - else - { - aMediaProp.SetTextValueL( KMPXMediaGeneralComment, KEmptyText ); - } + for ( TUint i = 0; i < length; i++ ) + ptr.Append( desData->ElementUint( i ) ); + PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL text = %S" ), + text ); + aMediaProp.SetTextValueL( KMPXMediaGeneralComment, text->Des() ); + CleanupStack::PopAndDestroy( text ); // - text + CleanupStack::PopAndDestroy( desData ); // - desData #endif //__MUSIC_ID_SUPPORT } @@ -879,7 +871,6 @@ break; } - CleanupStack::PopAndDestroy( textData ); // - textData PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::SetMetadataValueL" ) ); } @@ -1027,7 +1018,7 @@ CleanupClosePushL( abstractMediaAttributes ); // + abstractMediaAttributes abstractMediaAttributes.AppendL( KMPXMediaGeneralId ); abstractMediaAttributes.AppendL( KMPXMediaGeneralTitle ); - if ( aCategory == EMPXPlaylist ) + if ( aCategory == EMPXPlaylist ) // rollback until Rename is supported on MPX DB { abstractMediaAttributes.AppendL( KMPXMediaGeneralUri ); } @@ -1075,9 +1066,8 @@ media->SetTextValueL( KMPXMediaGeneralUri, aFullFileName ); TParsePtrC parse( aFullFileName ); - media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); - if ( ( aCategory == EMPXPlaylist ) || ( aCategory == EMPXAbstractAlbum ) ) + if ( aCategory == EMPXPlaylist ) // rollback until Rename is supported on MPX DB { media->SetTextValueL( KMPXMediaGeneralTitle, parse.Name() ); } @@ -1323,7 +1313,7 @@ CleanupClosePushL( abstractMediaAttributes ); // + abstractMediaAttributes abstractMediaAttributes.AppendL( KMPXMediaGeneralId ); abstractMediaAttributes.AppendL( KMPXMediaGeneralTitle ); - if ( aCategory == EMPXPlaylist ) + if ( aCategory == EMPXPlaylist ) // rollback until Rename is supported on MPX DB { abstractMediaAttributes.AppendL( KMPXMediaGeneralUri ); } @@ -1457,7 +1447,7 @@ { PRINT( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::GetAbstractMediaNameL" ) ); HBufC* name = NULL; - if ( aCategory == EMPXPlaylist ) + if ( aCategory == EMPXPlaylist ) // rollback until Rename is supported on MPX DB { if( !aAbstractMedia->IsSupported( KMPXMediaGeneralUri ) ) { diff -r 780c925249c1 -r 51035f0751c2 mmappcomponents/mmmtpdataprovider/src/mmmtpdputility.cpp --- a/mmappcomponents/mmmtpdataprovider/src/mmmtpdputility.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/src/mmmtpdputility.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -38,6 +38,7 @@ #include "mmmtpdpfiledefs.h" #include "tobjectdescription.h" #include "mmmtpdplogger.h" +#include "mmmtpdp_variant.hrh" using namespace ContentAccess; @@ -57,82 +58,77 @@ // EXPORT_C TMTPFormatCode MmMtpDpUtility::FormatFromFilename( const TDesC& aFullFileName ) { + TMTPFormatCode format = EMTPFormatCodeUndefined; + if ( aFullFileName.Right( 1 ).CompareF( KTxtBackSlash ) == 0 ) // We have a directory name { - return EMTPFormatCodeAssociation; + format = EMTPFormatCodeAssociation; } - - TParsePtrC file( aFullFileName ); - - if ( !file.ExtPresent() ) - return EMTPFormatCodeUndefined; - - // need to do it in popularity of format, to optmize performance - if ( file.Ext().CompareF( KTxtExtensionMP3 ) == 0 ) - return EMTPFormatCodeMP3; - -#ifdef __WINDOWS_MEDIA - if ( file.Ext().CompareF( KTxtExtensionWMA ) == 0 ) - return EMTPFormatCodeWMA; -#endif // __WINDOWS_MEDIA - - if ( ( file.Ext().CompareF( KTxtExtensionMP4 ) == 0 ) - || ( file.Ext().CompareF( KTxtExtensionM4A ) == 0 ) ) - return EMTPFormatCodeMP4Container; - - if ( ( file.Ext().CompareF( KTxtExtension3GP ) == 0 ) - || ( file.Ext().CompareF( KTxtExtension3G2 ) == 0 ) - || ( file.Ext().CompareF( KTxtExtensionO4A ) == 0 ) - || ( file.Ext().CompareF( KTxtExtensionO4V ) == 0 ) ) - return EMTPFormatCode3GPContainer; - - if ( file.Ext().CompareF( KTxtExtensionAAC ) == 0 ) - return EMTPFormatCodeAAC; + else + { + TParsePtrC file( aFullFileName ); - if ( file.Ext().CompareF( KTxtExtensionWAV ) == 0 ) - return EMTPFormatCodeWAV; - + if ( file.ExtPresent() ) + { + // need to do it in popularity of format, to optmize performance + if ( file.Ext().CompareF( KTxtExtensionMP3 ) == 0 ) + format = EMTPFormatCodeMP3; #ifdef __WINDOWS_MEDIA - if ( file.Ext().CompareF( KTxtExtensionWMV ) == 0 ) - return EMTPFormatCodeWMV; - - if ( file.Ext().CompareF( KTxtExtensionASF ) == 0 ) - return EMTPFormatCodeASF; - + else if ( file.Ext().CompareF( KTxtExtensionWMA ) == 0 ) + format = EMTPFormatCodeWMA; #endif // __WINDOWS_MEDIA + else if (( file.Ext().CompareF( KTxtExtensionPLA ) == 0 ) + || ( file.Ext().CompareF( KTxtExtensionVIR ) == 0 ) ) + format = EMTPFormatCodeAbstractAudioVideoPlaylist; + else if ( ( file.Ext().CompareF( KTxtExtensionMP4 ) == 0 ) + || ( file.Ext().CompareF( KTxtExtensionM4A ) == 0 ) ) + format = EMTPFormatCodeMP4Container; + else if ( ( file.Ext().CompareF( KTxtExtension3GP ) == 0 ) + || ( file.Ext().CompareF( KTxtExtension3G2 ) == 0 ) + || ( file.Ext().CompareF( KTxtExtensionO4A ) == 0 ) + || ( file.Ext().CompareF( KTxtExtensionO4V ) == 0 ) ) + format = EMTPFormatCode3GPContainer; + else if ( file.Ext().CompareF( KTxtExtensionAAC ) == 0 ) + format = EMTPFormatCodeAAC; + else if ( file.Ext().CompareF( KTxtExtensionWAV ) == 0 ) + format = EMTPFormatCodeWAV; +#ifdef __WINDOWS_MEDIA + else if ( file.Ext().CompareF( KTxtExtensionWMV ) == 0 ) + format = EMTPFormatCodeWMV; + else if ( file.Ext().CompareF( KTxtExtensionASF ) == 0 ) + format = EMTPFormatCodeASF; +#endif // __WINDOWS_MEDIA + else if ( file.Ext().CompareF( KTxtExtensionODF ) == 0 ) + { + HBufC8* mime = MmMtpDpUtility::ContainerMimeType( file.FullName() ); + if ( mime != NULL ) + { + // 3GP + if ( mime->CompareF( KMimeTypeAudio3gpp ) == 0 + || mime->CompareF( KMimeTypeVideo3gpp ) == 0 ) + { + delete mime; + mime = NULL; + format = EMTPFormatCode3GPContainer; + } + } - if ( file.Ext().CompareF( KTxtExtensionODF ) == 0 ) - { - HBufC8* mime = MmMtpDpUtility::ContainerMimeType( file.FullName() ); - if ( mime != NULL ) - { - // 3GP - if ( mime->CompareF( KMimeTypeAudio3gpp ) == 0 - || mime->CompareF( KMimeTypeVideo3gpp ) == 0 ) - { - delete mime; - mime = NULL; - return EMTPFormatCode3GPContainer; + if ( mime != NULL ) + { + delete mime; + mime = NULL; + } } - } - - if ( mime != NULL ) - { - delete mime; - mime = NULL; +#ifdef MMMTPDP_ABSTRACTAUDIOALBUM_SUPPORT + else if ( file.Ext().CompareF( KTxtExtensionALB ) == 0 ) + format = EMTPFormatCodeAbstractAudioAlbum; +#endif // MMMTPDP_ABSTRACTAUDIOALBUM_SUPPORT + else if ( file.Ext().CompareF( KTxtExtensionM3U ) == 0 ) + format = EMTPFormatCodeM3UPlaylist; } } - if ( file.Ext().CompareF( KTxtExtensionALB ) == 0 ) - return EMTPFormatCodeAbstractAudioAlbum; - - if (( file.Ext().CompareF( KTxtExtensionPLA ) == 0 ) || ( file.Ext().CompareF( KTxtExtensionVIR ) == 0 ) ) - return EMTPFormatCodeAbstractAudioVideoPlaylist; - - if ( file.Ext().CompareF( KTxtExtensionM3U ) == 0 ) - return EMTPFormatCodeM3UPlaylist; - - return EMTPFormatCodeUndefined; + return format; } // ----------------------------------------------------------------------------- diff -r 780c925249c1 -r 51035f0751c2 mmappfw_plat/harvester_server_api/inc/mpxharvestercommon.h --- a/mmappfw_plat/harvester_server_api/inc/mpxharvestercommon.h Wed Mar 31 22:26:09 2010 +0300 +++ b/mmappfw_plat/harvester_server_api/inc/mpxharvestercommon.h Wed Apr 14 16:28:17 2010 +0300 @@ -69,7 +69,7 @@ EUSBMTPEndEvent, // MTP end event EUSBMTPNotActiveEvent, // MTP selected but not active ESystemEventMax, // End of event enum - EPowerKeyEjectEvent // Power key eject mmc + EDiskDismountEvent // Disk dismount notification (MPX Harvester internal) }; #endif // MPX_HARVESTER_COMMON_H diff -r 780c925249c1 -r 51035f0751c2 mpx/collectionframework/collectionengine/inc/mpxcollectionengine.h --- a/mpx/collectionframework/collectionengine/inc/mpxcollectionengine.h Wed Mar 31 22:26:09 2010 +0300 +++ b/mpx/collectionframework/collectionengine/inc/mpxcollectionengine.h Wed Apr 14 16:28:17 2010 +0300 @@ -79,6 +79,14 @@ * @param aData some data */ IMPORT_C void NotifyL(TMPXCollectionBroadCastMsg aMsg, TInt aData); + + + /** + * Broadcast a command to all plug-ins + * @param aCmd command to send + * @param aData some data + */ + void Command(TMPXCollectionCommand aCmd, TInt aData); /** * Retrieves the set of supported file types in the collection server diff -r 780c925249c1 -r 51035f0751c2 mpx/collectionframework/collectionengine/src/mpxcollectionclientcontext.cpp --- a/mpx/collectionframework/collectionengine/src/mpxcollectionclientcontext.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mpx/collectionframework/collectionengine/src/mpxcollectionclientcontext.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -619,6 +619,13 @@ iEngine.PluginPop(); break; } + case EMcCloseCollection: + { + // Forward to all plug-ins; argument is drive number + iEngine.Command ( aCmd, aData ); + break; + } + default: { User::Leave(KErrNotSupported); diff -r 780c925249c1 -r 51035f0751c2 mpx/collectionframework/collectionengine/src/mpxcollectionengine.cpp --- a/mpx/collectionframework/collectionengine/src/mpxcollectionengine.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mpx/collectionframework/collectionengine/src/mpxcollectionengine.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -253,12 +253,7 @@ } if( command != KErrNotSupported ) { - TArray plugins = iPluginHandler->LoadedPlugins(); - for( TInt i=0; iCommandL( (TMPXCollectionCommand)command, data)); - } + Command( (TMPXCollectionCommand)command, data ); } if( clearCache ) @@ -295,6 +290,16 @@ } } +void CMPXCollectionEngine::Command( TMPXCollectionCommand aCmd, TInt aData ) + { + TArray plugins = iPluginHandler->LoadedPlugins(); + for( TInt i=0; iCommandL( aCmd, aData)); + } + } + // ---------------------------------------------------------------------------- // Retrieves all of the supported types in the collection // ---------------------------------------------------------------------------- diff -r 780c925249c1 -r 51035f0751c2 mpx/collectionframework/collectionserver/src/mpxcollectionserversession.cpp --- a/mpx/collectionframework/collectionserver/src/mpxcollectionserversession.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mpx/collectionframework/collectionserver/src/mpxcollectionserversession.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -570,14 +570,14 @@ // void CMPXCollectionSession::CancelRequests() { + if (iContext) + { + iContext->CancelRequest(this); + } if (!iMessage.IsNull()) { iMessage.Complete(KErrCancel); } - if (iContext) - { - iContext->CancelRequest(this); - } } // ---------------------------------------------------------------------------- diff -r 780c925249c1 -r 51035f0751c2 mpx/commonframework/common/src/mpxdataarray.cpp --- a/mpx/commonframework/common/src/mpxdataarray.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mpx/commonframework/common/src/mpxdataarray.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -55,7 +55,10 @@ // void RMPXDataItem::Copy(TUint aClientHandle,TAny* aSrc,TInt aSize) { - MPX_ASSERT(aSrc&&aClientHandle); + //The source could be zero-length descriptor: aSize is 0 and aSrc is NULL + //ASSERT if aSrc is NULL while aSize is not zero, invalid descriptor + MPX_ASSERT(((aSrc!=NULL)?ETrue:(aSize==0))&&aClientHandle); + // Reset(aClientHandle); RMPXHeapManager& m=RMPXHeapManager::HeapManager(aClientHandle); diff -r 780c925249c1 -r 51035f0751c2 mpx/playbackframework/playbackengine/src/mpxplaybackengine.cpp --- a/mpx/playbackframework/playbackengine/src/mpxplaybackengine.cpp Wed Mar 31 22:26:09 2010 +0300 +++ b/mpx/playbackframework/playbackengine/src/mpxplaybackengine.cpp Wed Apr 14 16:28:17 2010 +0300 @@ -1678,14 +1678,6 @@ iCallback->HandleProperty(aProperty,aValue,aError); iCallback = NULL; iTaskQueue->CompleteTask(); - - // notify client the new position during the playback - if ((EPbPropertyPosition == aProperty) && (iProgressTimer->IsActive())) - { - TRAP_IGNORE(iClientList->SendMsgL( - TMPXPlaybackMessage(TMPXPlaybackMessage::EPropertyChanged, - EPbPropertyPosition,aValue))); - } } MPX_DEBUG2("<--CMPXPlaybackEngine::HandleProperty 0x%08x", this); }