diff -r 5e1df1b52eb3 -r 72396548277c engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsthumbnail.cpp --- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsthumbnail.cpp Mon May 17 13:35:26 2010 +0530 +++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsthumbnail.cpp Fri May 28 21:11:54 2010 +0530 @@ -156,14 +156,17 @@ void CGlxDataSourceTaskMdeThumbnail::ExecuteRequestL() { TRACER("CGlxDataSourceTaskMdeThumbnail::ExecuteRequestL()") +#ifdef _DEBUG + iStartTime.HomeTime(); +#endif CGlxThumbnailRequest* request = static_cast(iRequest); TGlxThumbnailRequest tnReq; request->ThumbnailRequest(tnReq); -#ifdef _DEBUG - RDebug::Print(_L("==> CGlxDataSourceTaskMdeThumbnail::ExecuteRequestL - FetchThumbnailL(Id=%d), W(%d), H(%d)"), request->ItemId().Value(), tnReq.iSizeClass.iWidth, tnReq.iSizeClass.iHeight); - iStartTime.HomeTime(); // Get home time -#endif + GLX_DEBUG4("*** CGlxDataSourceTaskMdeThumbnail::ExecuteRequestL() Id=%d, TN Size w(%d) h(%d) ***", tnReq.iId.Value(), + tnReq.iSizeClass.iWidth, tnReq.iSizeClass.iHeight); + GLX_DEBUG2("CGlxDataSourceTaskMdeThumbnail::ExecuteRequestL() iPriorityMode=%d", tnReq.iPriorityMode); + #ifdef USE_S60_TNM if(request->ThumbnailInfo()) { @@ -173,7 +176,7 @@ } else { - ThumbnailFetchComplete(KErrNone); + ThumbnailFetchComplete(KErrNone, ETrue); } } else @@ -241,11 +244,13 @@ { TRACER("CGlxDataSourceTaskMdeThumbnail::HandleThumbnailFetchCompleteL()") __ASSERT_DEBUG(dynamic_cast(iRequest), Panic(EGlxPanicLogicError)); + CGlxThumbnailRequest* req = static_cast(iRequest); + GLX_DEBUG2("*** CGlxDataSourceTaskMdeThumbnail::HandleThumbnailFetchCompleteL() Id=%d ***", req->ItemId().Value()); #ifdef _DEBUG - iStopTime.HomeTime(); // Get home time - RDebug::Print(_L("==> ThumbnailFetchComplete <%d> us"), (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64()); -#endif - CGlxThumbnailRequest* req = static_cast(iRequest); + iStopTime.HomeTime(); + GLX_DEBUG2("CGlxDataSourceTaskMdeThumbnail:HandleThumbnailFetchCompleteL() took %d us", + (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64()); +#endif delete iResponse; iResponse = NULL; iResponse = CMPXMedia::NewL(); @@ -257,6 +262,7 @@ tnAttribute->iDimensions = size; tnAttribute->iCroppingRect = tnRequest.iCroppingRect; tnAttribute->iThumbnailQuality = aQuality; + GLX_DEBUG2("CGlxDataSourceTaskMdeThumbnail::HandleThumbnailFetchCompleteL() aQuality=%d", aQuality); TUint attributeId = req->AttributeId(); if ( GlxIsFullThumbnailAttribute(attributeId) ) @@ -273,7 +279,8 @@ } #ifdef USE_S60_TNM -void CGlxDataSourceTaskMdeThumbnail::ThumbnailFetchComplete(TInt aError) +void CGlxDataSourceTaskMdeThumbnail::ThumbnailFetchComplete(TInt aError, + TBool aQuality) { TRACER("CGlxDataSourceTaskMdeThumbnail::ThumbnailFetchComplete(TNM)") CGlxThumbnailRequest* request = static_cast(iRequest); @@ -282,7 +289,12 @@ TInt err = aError; if(!err) { - TRAP(err, HandleThumbnailFetchCompleteL(tnRequest.iId, EGlxThumbnailQualityHigh)); + TGlxThumbnailQuality tnQuality = EGlxThumbnailQualityHigh; + if (!aQuality) + { + tnQuality = EGlxThumbnailQualityLow; + } + TRAP(err, HandleThumbnailFetchCompleteL(tnRequest.iId, tnQuality)); } HandleRequestComplete(err); } @@ -297,6 +309,7 @@ const TGlxMediaId& aItemId, TGlxThumbnailQuality aQuality, TInt aErrorCode) { TRACER("CGlxDataSourceTaskMdeThumbnail::ThumbnailFetchComplete()") + GLX_DEBUG2("CGlxDataSourceTaskMdeThumbnail::ThumbnailFetchComplete() aErrorCode=%d", aErrorCode); iTnRequestInProgress = EFalse; TInt err = aErrorCode; if(!err) @@ -368,18 +381,19 @@ /// @todo: use default filter so we can ensure we always get correct first item if filters change iFilterProperties.iSortOrder = EGlxFilterSortOrderCaptureDate; - iFilterProperties.iSortDirection = EGlxFilterSortDirectionAscending; + iFilterProperties.iSortDirection = EGlxFilterSortDirectionOverrideToDescendingIfDate; iFilterProperties.iLastCaptureDate = ETrue; if( CGlxDataSource::EContainerTypeMonth == containerType ) { - iFilterProperties.iOrigin = EGlxFilterOriginCamera; + iFilterProperties.iOrigin = EGlxFilterOriginAll; AddMonthFilterL(item, iFilterProperties); container = TGlxMediaId(KGlxCollectionRootId); objectDef = &DataSource()->ObjectDef(); } - DoQueryL(*objectDef, ETrue, EContainerFirstItemQuery, EQueryResultModeObjectWithFreetexts, container); + DoQueryL(*objectDef, ETrue, EContainerFirstItemQuery, + EQueryResultModeItem, container); } else { @@ -433,7 +447,8 @@ } CMdEProperty* lastModifiedDateProperty; - CMdEPropertyDef& lastModifiedDatePropertyDef = aItem->Def().GetPropertyDefL(KPropertyDefNameLastModifiedDate); + CMdEPropertyDef& lastModifiedDatePropertyDef = aItem->Def().GetPropertyDefL( + KPropertyDefNameLastModifiedDate); #ifdef _DEBUG TInt index = // This variable is only required for the assert debug below. If it is not wrapped in an @@ -467,7 +482,8 @@ // i.e. background thumbnail generation // so we get status from CAF to avoid forcing second stage harvest TRAP(err, - ContentAccess::CContent* content = ContentAccess::CContent::NewLC(iTnFileInfo->FilePath()); + ContentAccess::CContent* content = ContentAccess::CContent::NewLC( + iTnFileInfo->FilePath()); content->GetAttribute(ContentAccess::EIsProtected, iTnFileInfo->iIsProtected); CleanupStack::PopAndDestroy(content); ); @@ -512,10 +528,11 @@ void CGlxDataSourceTaskMdeThumbnail::CompleteThumbnailRequest(TInt aError) { TRACER("CGlxDataSourceTaskMdeThumbnail::CompleteThumbnailRequest(TInt aError)") + GLX_DEBUG2("CGlxDataSourceTaskMdeThumbnail::CompleteThumbnailRequest aError=%d", aError); #ifdef USE_S60_TNM if (aError != KErrNone) { - ThumbnailFetchComplete(aError); + ThumbnailFetchComplete(aError, EFalse); } else { @@ -526,11 +543,15 @@ if (tnReq.iSizeClass.iWidth > 0 && tnReq.iSizeClass.iHeight > 0 ) { request->SetThumbnailInfo(iTnFileInfo); + //This function is called number of times as a callback , + //hence not trapping the leaving function which costs time and memory. + //Ignoring this for code scanner warnings - Leaving functions called in non-leaving functions. DataSource()->FetchThumbnailL(iRequest, *this); } else { - ThumbnailFetchComplete(KErrArgument); + GLX_LOG_INFO("CGlxDataSourceTaskMdeThumbnail::CompleteThumbnailRequest KErrArgument"); + ThumbnailFetchComplete(KErrArgument, EFalse); } } #else @@ -571,18 +592,19 @@ /// @todo: use default filter so we can ensure we always get correct first item if filters change iFilterProperties.iSortOrder = EGlxFilterSortOrderCaptureDate; - iFilterProperties.iSortDirection = EGlxFilterSortDirectionAscending; + iFilterProperties.iSortDirection = EGlxFilterSortDirectionOverrideToDescendingIfDate; iFilterProperties.iLastCaptureDate = ETrue; if( CGlxDataSource::EContainerTypeMonth == containerType ) { - iFilterProperties.iOrigin = EGlxFilterOriginCamera; + iFilterProperties.iOrigin = EGlxFilterOriginAll; AddMonthFilterL(item, iFilterProperties); container = TGlxMediaId(KGlxCollectionRootId); objectDef = &DataSource()->ObjectDef(); } - DoQueryL(*objectDef, ETrue, EContainerFirstItemQuery, EQueryResultModeObjectWithFreetexts, container); + DoQueryL(*objectDef, ETrue, EContainerFirstItemQuery, + EQueryResultModeItem, container); } else {