diff -r 4740b34b83ce -r f56ec6ce2732 mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp --- a/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp Tue Apr 27 17:09:22 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp Tue May 11 16:40:32 2010 +0300 @@ -62,6 +62,8 @@ _LIT( KMpxCollectionGetReference, "MpxCollectionGetReference" ); _LIT( KMpxCollectionFindAllLValidate, "MpxCollectionValidate" ); _LIT( KMpxCollectionFindAllLBeforeAdd, "MpxCollectionFindAllLBeforeAdd" ); +_LIT( KMpxCollectionFindAllLModified, "MpxCollectionFindAllLModified" ); +_LIT( KMpxCollectionCleanupDeletedMediasL, "KMpxCollectionCleanupDeletedMediasL" ); _LIT( KSetMetadataValue, "SetMetadataValueL" ); #endif @@ -80,7 +82,8 @@ } CMmMtpDpMetadataMpxAccess::CMmMtpDpMetadataMpxAccess( RFs& aRfs ): - iRfs( aRfs ) + iRfs( aRfs ), + iSampleData( NULL ) { // Do nothing } @@ -111,6 +114,8 @@ iCollectionHelper = NULL; } + delete iSampleData; + // for performance measurement purpose #if defined(_DEBUG) || defined(MMMTPDP_PERFLOG) delete iPerfLog; @@ -393,7 +398,10 @@ searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXSong ); searchMedia->SetTObjectValueL( KMPXMediaGeneralId, KMtpInvalidSongID ); - searchMedia->SetTextValueL( KMPXMediaGeneralDrive, iStoreRoot ); + if ( iStoreRoot.Length() > 0 ) + { + searchMedia->SetTextValueL( KMPXMediaGeneralDrive, iStoreRoot ); + } RArray songAttributes; CleanupClosePushL( songAttributes ); // + songAttributes @@ -455,8 +463,10 @@ PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::FindWMPMediaLC searchMedia setup with no problems" ) ); + PERFLOGSTART(KMpxCollectionFindAllLModified); CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, songAttributes.Array() ); + PERFLOGSTOP(KMpxCollectionFindAllLModified); PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::FindWMPMediaLC foundMedia assigned from FindAllL" ) ); CleanupStack::PopAndDestroy( &songAttributes ); // - songAttributes @@ -587,7 +597,9 @@ // as there is NOT a separate database for deleted files. PRINT( _L( "MM MTP <> Deleting metadata for deleted files" ) ); + PERFLOGSTART( KMpxCollectionCleanupDeletedMediasL ); CollectionHelperL()->CleanupDeletedMediasL(); + PERFLOGSTOP( KMpxCollectionCleanupDeletedMediasL ); PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::UpdateMusicCollectionL" ) ); } @@ -685,6 +697,9 @@ CollectionHelperL()->SetL( media ); PERFLOGSTOP( KMpxCollectionSetL ); + delete iSampleData; + iSampleData = NULL; + CleanupStack::PopAndDestroy( 2, &contentIDs ); // - media, contentIDs PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::SetObjectMetadataValueL" ) ); @@ -881,16 +896,19 @@ const TDesC& suid = aMediaProp.ValueText( KMPXMediaGeneralUri ); PRINT2( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL SampleData numElements = %d, suid = %S" ), numElements, &suid ); - HBufC8* sampleData = HBufC8::NewLC( numElements * sizeof( TUint8 ) ); - TPtr8 samplePtr = sampleData->Des(); + delete iSampleData; + iSampleData = NULL; + + iSampleData = HBufC8::NewL( numElements * sizeof( TUint8 ) ); + TPtr8 samplePtr = iSampleData->Des(); mtpTypeArray.ToDes( samplePtr ); RFile sampleFile; CleanupClosePushL( sampleFile ); User::LeaveIfError( sampleFile.Replace( iRfs, suid, EFileWrite ) ); User::LeaveIfError( sampleFile.Write( samplePtr ) ); + aMediaProp.SetTObjectValueL( KMPXMediaMTPSampleData, (TInt)iSampleData ); + aMediaProp.SetTObjectValueL( attrib, ETrue ); CleanupStack::PopAndDestroy( &sampleFile ); - CleanupStack::PopAndDestroy( sampleData ); - aMediaProp.SetTObjectValueL( attrib, ETrue ); PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL SampleData is ready = %u" ), 1 ); } break; @@ -926,7 +944,9 @@ searchMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem ); searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXSong ); searchMedia->SetTextValueL( KMPXMediaGeneralUri, aFullFileName ); - searchMedia->SetTextValueL( KMPXMediaGeneralDrive, iStoreRoot ); + + TParsePtrC parse( aFullFileName ); + searchMedia->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); RArray songAttributes; CleanupClosePushL( songAttributes ); // + songAttributes @@ -1158,7 +1178,7 @@ TParsePtrC parse( aRefFileArray[j] ); media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); media->SetTObjectValueL( KMPXMediaGeneralModified, EFalse ); - + // Add media into array contents abstractMediaArray->AppendL( media ); @@ -1568,7 +1588,9 @@ searchMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem ); searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXPlaylist ); searchMedia->SetTextValueL( KMPXMediaGeneralUri, aSuid ); - searchMedia->SetTextValueL( KMPXMediaGeneralDrive, iStoreRoot ); + + TParsePtrC parse( aSuid ); + searchMedia->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); RArray playlistAttributes; CleanupClosePushL( playlistAttributes ); // + playlistAttributes