--- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetthumb.cpp Fri Feb 19 23:40:44 2010 +0200
+++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetthumb.cpp Fri Mar 12 15:46:41 2010 +0200
@@ -58,7 +58,7 @@
CMTPImageDpGetThumb::~CMTPImageDpGetThumb()
{
__FLOG(_L8(">> CMTPImageDpGetThumb::~CMTPImageDpGetThumb"));
- delete iThumb;
+ delete iThumb;
delete iObjectMeta;
__FLOG(_L8("<< CMTPImageDpGetThumb::~CMTPImageDpGetThumb"));
__FLOG_CLOSE;
@@ -80,7 +80,7 @@
{
__FLOG_OPEN(KMTPSubsystem, KComponent);
__FLOG(_L8("CMTPImageDpGetThumb::ConstructL"));
- iThumb = CMTPTypeOpaqueData::NewL();
+ iThumb = CMTPTypeOpaqueData::NewL();
iObjectMeta = CMTPObjectMetaData::NewL();
__FLOG(_L8("CMTPImageDpGetThumb::ConstructL"));
}
@@ -102,17 +102,30 @@
{
__FLOG(_L8(">> CMTPImageDpGetThumb::ServiceL"));
TInt err = KErrNone;
- TEntry fileEntry;
- User::LeaveIfError(iFramework.Fs().Entry(iObjectMeta->DesC(CMTPObjectMetaData::ESuid), fileEntry));
- imgDp.ThumbnailManager().GetThumbMgr()->SetFlagsL(CThumbnailManager::EDefaultFlags);
- if(fileEntry.iSize > KFileSizeMax)
+ //at first, try to query thumbnail from property manager
+ HBufC8* thumbnailData = imgDp.PropertyMgr().Thumbnail(iObjectMeta->Uint(CMTPObjectMetaData::EHandle));
+ if (thumbnailData == NULL)
{
- __FLOG(_L8(">> CMTPImageDpGetThumb::ServiceL, fileEntry.iSize > KFileSizeMax"));
- imgDp.ThumbnailManager().GetThumbMgr()->SetFlagsL(CThumbnailManager::EDoNotCreate);
+ __FLOG(_L8("CMTPImageDpGetThumb::ServiceL- fail to query thumbnail from cache"));
+ TEntry fileEntry;
+
+ User::LeaveIfError(iFramework.Fs().Entry(iObjectMeta->DesC(CMTPObjectMetaData::ESuid), fileEntry));
+ imgDp.ThumbnailManager().GetThumbMgr()->SetFlagsL(CThumbnailManager::EDefaultFlags);
+ if(fileEntry.FileSize() > KFileSizeMax)
+ {
+ __FLOG(_L8(">> CMTPImageDpGetThumb::ServiceL, fileEntry.FileSize() > KFileSizeMax"));
+ imgDp.ThumbnailManager().GetThumbMgr()->SetFlagsL(CThumbnailManager::EDoNotCreate);
+ }
+
+ imgDp.ThumbnailManager().GetThumbnailL(iObjectMeta->DesC(CMTPObjectMetaData::ESuid), thumbnailData, err);
+ User::LeaveIfError(err);
+ User::LeaveIfNull(thumbnailData);
+
+ //Transfer ownership of thumbnailData to Property Manager
+ imgDp.PropertyMgr().StoreThunmnail(iObjectMeta->Uint(CMTPObjectMetaData::EHandle), thumbnailData);
}
- imgDp.ThumbnailManager().GetThumbnailL(iObjectMeta->DesC(CMTPObjectMetaData::ESuid), *iThumb, err);
- User::LeaveIfError(err);
+ iThumb->Write(*thumbnailData);
SendDataL(*iThumb);
__FLOG(_L8("<< CMTPImageDpGetThumb::ServiceL"));
}