39 CThumbnailGenerateTask::CThumbnailGenerateTask( CThumbnailTaskProcessor& |
39 CThumbnailGenerateTask::CThumbnailGenerateTask( CThumbnailTaskProcessor& |
40 aProcessor, CThumbnailServer& aServer, RFile64* aFile, TDesC8* aBuffer, |
40 aProcessor, CThumbnailServer& aServer, RFile64* aFile, TDesC8* aBuffer, |
41 const TDataType* aMimeType, CThumbnailManager::TThumbnailFlags aFlags, |
41 const TDataType* aMimeType, CThumbnailManager::TThumbnailFlags aFlags, |
42 const TSize& aSize, TDisplayMode aDisplayMode, TInt aPriority, |
42 const TSize& aSize, TDisplayMode aDisplayMode, TInt aPriority, |
43 RArray < TThumbnailPersistentSize >* aMissingSizes, const TDesC& aTargetUri, |
43 RArray < TThumbnailPersistentSize >* aMissingSizes, const TDesC& aTargetUri, |
44 TThumbnailSize aThumbnailSize, const TThumbnailId aThumbnailId, |
44 TThumbnailSize aThumbnailSize, const TInt64 aModified, |
45 const CThumbnailManager::TThumbnailQualityPreference aQualityPreference ): |
45 const CThumbnailManager::TThumbnailQualityPreference aQualityPreference ): |
46 CThumbnailTask( aProcessor, aPriority ), iServer( aServer ), |
46 CThumbnailTask( aProcessor, aPriority ), iServer( aServer ), |
47 iFlags( aFlags ), iSize( aSize ), iDisplayMode( aDisplayMode ), |
47 iFlags( aFlags ), iSize( aSize ), iDisplayMode( aDisplayMode ), |
48 iMissingSizes( aMissingSizes ), iTargetUri( aTargetUri ), |
48 iMissingSizes( aMissingSizes ), iTargetUri( aTargetUri ), |
49 iThumbnailSize( aThumbnailSize ), iThumbnailId(aThumbnailId), |
49 iThumbnailSize( aThumbnailSize ), iModified(aModified), |
50 iQualityPreference( aQualityPreference ) |
50 iQualityPreference( aQualityPreference ) |
51 { |
51 { |
52 TN_DEBUG2( "CThumbnailGenerateTask(0x%08x)::CThumbnailGenerateTask()", this); |
52 TN_DEBUG2( "CThumbnailGenerateTask(0x%08x)::CThumbnailGenerateTask()", this); |
53 |
53 |
54 if ( !aBuffer && aFile) |
54 if ( !aBuffer && aFile) |
352 } |
352 } |
353 } |
353 } |
354 |
354 |
355 CThumbnailScaleTask* scaleTask = CThumbnailScaleTask::NewL( iProcessor, iServer, iFilename, |
355 CThumbnailScaleTask* scaleTask = CThumbnailScaleTask::NewL( iProcessor, iServer, iFilename, |
356 iBitmap, iOriginalSize, (*iMissingSizes)[ i ].iSize, (*iMissingSizes)[ i ].iCrop, iDisplayMode, |
356 iBitmap, iOriginalSize, (*iMissingSizes)[ i ].iSize, (*iMissingSizes)[ i ].iCrop, iDisplayMode, |
357 KMaxPriority, iTargetUri, (*iMissingSizes)[ i ].iType, iThumbnailId, iScaledBitmapToPool, iEXIF ); |
357 KMaxPriority, iTargetUri, (*iMissingSizes)[ i ].iType, iModified, iScaledBitmapToPool, iEXIF ); |
358 CleanupStack::PushL( scaleTask ); |
358 CleanupStack::PushL( scaleTask ); |
359 |
359 |
360 TInt err1 = KErrNone; |
360 TInt err1 = KErrNone; |
361 TInt err2 = KErrNone; |
361 TInt err2 = KErrNone; |
362 if(iFilename != KNullDesC) |
362 if(iFilename != KNullDesC) |
409 } |
409 } |
410 |
410 |
411 complTask = CThumbnailScaleTask::NewL( iProcessor, iServer, iFilename, |
411 complTask = CThumbnailScaleTask::NewL( iProcessor, iServer, iFilename, |
412 iBitmap, iOriginalSize, iSize, iFlags& CThumbnailManager |
412 iBitmap, iOriginalSize, iSize, iFlags& CThumbnailManager |
413 ::ECropToAspectRatio, iDisplayMode, KMaxPriority, iTargetUri, |
413 ::ECropToAspectRatio, iDisplayMode, KMaxPriority, iTargetUri, |
414 iThumbnailSize, iThumbnailId, iScaledBitmapToPool, iEXIF ); |
414 iThumbnailSize, iModified, iScaledBitmapToPool, iEXIF ); |
415 CleanupStack::PushL( complTask ); |
415 CleanupStack::PushL( complTask ); |
416 |
416 |
417 TInt err1 = KErrNone; |
417 TInt err1 = KErrNone; |
418 TInt err2 = KErrNone; |
418 TInt err2 = KErrNone; |
419 if(iFilename != KNullDesC) |
419 if(iFilename != KNullDesC) |
480 // of requested size only meaningful. |
480 // of requested size only meaningful. |
481 |
481 |
482 if(iFilename != KNullDesC) |
482 if(iFilename != KNullDesC) |
483 { |
483 { |
484 iServer.StoreForPathL( iFilename )->StoreThumbnailL( |
484 iServer.StoreForPathL( iFilename )->StoreThumbnailL( |
485 iFilename, tempBitmap, aOriginalSize, EFalse, iThumbnailSize, iThumbnailId, EFalse, ETrue ); |
485 iFilename, tempBitmap, aOriginalSize, EFalse, iThumbnailSize, iModified, EFalse, ETrue ); |
486 } |
486 } |
487 else if(iTargetUri != KNullDesC) |
487 else if(iTargetUri != KNullDesC) |
488 { |
488 { |
489 iServer.StoreForPathL( iTargetUri )->StoreThumbnailL( |
489 iServer.StoreForPathL( iTargetUri )->StoreThumbnailL( |
490 iTargetUri, tempBitmap, aOriginalSize, EFalse, iThumbnailSize, iThumbnailId, EFalse, ETrue ); |
490 iTargetUri, tempBitmap, aOriginalSize, EFalse, iThumbnailSize, iModified, EFalse, ETrue ); |
491 } |
491 } |
492 |
492 |
493 CleanupStack::PopAndDestroy( tempBitmap ); |
493 CleanupStack::PopAndDestroy( tempBitmap ); |
494 } |
494 } |
495 |
495 |
504 // Because no actual bitmap data is generated, there is no reason to |
504 // Because no actual bitmap data is generated, there is no reason to |
505 // add bitmap to server bitmap pool. Completion of client request with |
505 // add bitmap to server bitmap pool. Completion of client request with |
506 // error code just results in applications showing their default bitmap. |
506 // error code just results in applications showing their default bitmap. |
507 if( aError != KErrNone && (iFilename != KNullDesC || iTargetUri != KNullDesC )) |
507 if( aError != KErrNone && (iFilename != KNullDesC || iTargetUri != KNullDesC )) |
508 { |
508 { |
509 if ( aError == KErrNotSupported || |
509 if (aError == KErrNotFound || |
|
510 aError == KErrNotSupported || |
510 aError == KErrCorrupt || |
511 aError == KErrCorrupt || |
511 aError == KErrCompletion || |
512 aError == KErrCompletion || |
512 aError == KErrUnderflow) |
513 aError == KErrUnderflow || |
|
514 aError == KErrNotReady) |
513 { |
515 { |
514 |
516 |
515 if(iMissingSizes) |
517 if(iMissingSizes) |
516 { |
518 { |
517 TN_DEBUG2( "CThumbnailGenerateTask::DoBlacklisting() - blacklist missing sizes count = %d", iMissingSizes->Count() ); |
519 TN_DEBUG2( "CThumbnailGenerateTask::DoBlacklisting() - blacklist missing sizes count = %d", iMissingSizes->Count() ); |