241 |
236 |
242 // read message params |
237 // read message params |
243 aMessage.ReadL( 0, iRequestParams ); |
238 aMessage.ReadL( 0, iRequestParams ); |
244 const TThumbnailRequestParams& params = iRequestParams(); |
239 const TThumbnailRequestParams& params = iRequestParams(); |
245 |
240 |
246 TBool finished = Server()->UpdateThumbnailsL( params.iThumbnailId, params.iFileName, params.iOrientation, params.iModified ); |
241 TBool finished = Server()->UpdateThumbnailsL( params.iFileName, params.iOrientation, params.iModified ); |
247 |
242 |
248 RArray < TThumbnailPersistentSize >* missingSizes = NULL; |
243 RArray < TThumbnailPersistentSize >* missingSizes = NULL; |
|
244 |
|
245 TBool gridSizeOnly(EFalse); |
|
246 |
|
247 if ( params.iQualityPreference == CThumbnailManager |
|
248 ::EOptimizeForQualityWithPreview ) |
|
249 { |
|
250 gridSizeOnly = ETrue; |
|
251 } |
249 |
252 |
250 if (finished) |
253 if (finished) |
251 { |
254 { |
252 // source type |
255 // source type |
253 TDataType mimeType; |
256 TDataType mimeType; |
254 TInt sourceType = 0; |
257 TInt sourceType = 0; |
255 TInt err = Server()->MimeTypeFromFileExt( params.iFileName, mimeType ); |
258 TInt err = Server()->MimeTypeFromFileExt( params.iFileName, mimeType ); |
256 TBool missingIDs(EFalse); |
|
257 |
259 |
258 // get missing sizes |
260 // get missing sizes |
259 if ( err == KErrNone && ( params.iControlFlags & EThumbnailGeneratePersistentSizesOnly ) != 0 ) |
261 if ( err == KErrNone && ( params.iControlFlags & EThumbnailGeneratePersistentSizesOnly ) != 0 ) |
260 { |
262 { |
261 sourceType = Server()->SourceTypeFromMimeType( mimeType ); |
263 sourceType = Server()->SourceTypeFromMimeType( mimeType ); |
262 |
264 |
263 missingSizes = new (ELeave) RArray < TThumbnailPersistentSize >; |
265 missingSizes = new (ELeave) RArray < TThumbnailPersistentSize >; |
264 CleanupClosePushL( *missingSizes ); |
266 CleanupClosePushL( *missingSizes ); |
265 |
267 |
266 Server()->GetMissingSizesAndIDsL( params.iFileName, sourceType, *missingSizes, missingIDs); |
268 Server()->GetMissingSizesL( params.iFileName, sourceType, *missingSizes, gridSizeOnly ); |
267 |
269 |
268 if ( missingSizes->Count() == 0) |
270 if ( missingSizes->Count() == 0) |
269 { |
271 { |
270 // all thumbs already exist |
272 // all thumbs already exist |
271 CleanupStack::PopAndDestroy( missingSizes ); |
273 CleanupStack::PopAndDestroy( missingSizes ); |
332 User::Leave(KErrArgument); |
334 User::Leave(KErrArgument); |
333 } |
335 } |
334 |
336 |
335 aMessage.ReadL( 0, iRequestParams ); |
337 aMessage.ReadL( 0, iRequestParams ); |
336 const TThumbnailRequestParams& params = iRequestParams(); |
338 const TThumbnailRequestParams& params = iRequestParams(); |
337 TRAPD( err, Server()->FetchThumbnailL( params.iThumbnailId, iBitmap, iBuffer, |
339 |
338 params.iThumbnailSize, iOriginalSize )); |
|
339 if ( !err && iBitmap ) |
|
340 { |
|
341 TN_DEBUG1( |
|
342 "CThumbnailServerSession::RequestThumbByIdAsyncL() - found existing thumbnail- bitmap" ); |
|
343 |
|
344 ProcessBitmapL(); |
|
345 } |
|
346 else if ( !err && iBuffer) |
|
347 { |
|
348 TN_DEBUG1( |
|
349 "CThumbnailServerSession::RequestThumbByIdAsyncL() - found existing thumbnail- jpeg" ); |
|
350 |
|
351 CThumbnailDecodeTask* task = new( ELeave )CThumbnailDecodeTask( Server() |
|
352 ->Processor(), * Server(), iBuffer, params.iPriority, params.iDisplayMode ); |
|
353 |
|
354 CleanupStack::PushL( task ); |
|
355 task->SetMessageData( TThumbnailServerRequestId( this, params.iRequestId ), iMessage ); |
|
356 Server()->QueueTaskL( task ); |
|
357 CleanupStack::Pop( task ); // owned by processor now |
|
358 |
|
359 // Decode task is now responsible for completing the message |
|
360 iMessage = RMessage2(); |
|
361 |
|
362 //CThumbnailDecodeTask is responsible freeing |
|
363 iBuffer = NULL; |
|
364 } |
|
365 else if( err == KErrCompletion ) |
|
366 { |
|
367 // If thumbnail of requested size is blacklisted, fetching is left with KErrCompletion |
|
368 TN_DEBUG1( |
|
369 "CThumbnailServerSession::RequestThumbByIdAsyncL() - thumbnail blacklisted" ); |
|
370 aMessage.Complete( err ); |
|
371 iMessage = RMessage2(); |
|
372 } |
|
373 else |
|
374 { |
|
375 TN_DEBUG2( |
|
376 "CThumbnailServerSession::RequestThumbByIdAsyncL() - thumbnail not found ( query path from MDS ), err=%d ", err ); |
|
377 |
|
378 #ifdef RD_MDS_2_5 |
340 #ifdef RD_MDS_2_5 |
379 // try to query path from MDS |
341 // try to query path from MDS |
380 CThumbnailMDSQueryTask* task = new( ELeave )CThumbnailMDSQueryTask( |
342 CThumbnailMDSQueryTask* task = new( ELeave )CThumbnailMDSQueryTask( |
381 Server()->Processor(), params.iPriority + 1, Server()->GetMdESession(), *Server()); |
343 Server()->Processor(), params.iPriority + 1, Server()->GetMdESession(), *Server()); |
382 |
344 |
383 CleanupStack::PushL( task ); |
345 CleanupStack::PushL( task ); |
384 task->QueryPathByIdL(params.iThumbnailId); |
346 task->QueryPathByIdL(params.iThumbnailId, EFalse); |
385 task->SetMessageData( TThumbnailServerRequestId( this, params.iRequestId ), iMessage ); |
347 task->SetMessageData( TThumbnailServerRequestId( this, params.iRequestId ), iMessage ); |
386 Server()->QueueTaskL( task ); |
348 Server()->QueueTaskL( task ); |
387 CleanupStack::Pop( task ); // owned by processor now |
349 CleanupStack::Pop( task ); // owned by processor now |
388 |
350 |
389 // query task is now responsible for completing the message |
351 // query task is now responsible for completing the message |
390 iMessage = RMessage2(); |
352 iMessage = RMessage2(); |
391 #else |
353 #else |
392 User::Leave(KThumbnailErrThumbnailNotFound); |
354 User::Leave(KErrNotSupported); |
393 #endif // RD_MDS_2_5 |
355 #endif // RD_MDS_2_5 |
394 |
356 |
395 } |
|
396 |
357 |
397 #ifdef _DEBUG |
358 #ifdef _DEBUG |
398 aStop.UniversalTime(); |
359 aStop.UniversalTime(); |
399 TN_DEBUG2( "CThumbnailStore::RequestThumbByIdAsyncL() request took %d ms", (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000 ); |
360 TN_DEBUG2( "CThumbnailServerSession::RequestThumbByIdAsyncL() request took %d ms", (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000 ); |
400 #endif |
361 #endif |
401 |
362 |
402 TN_DEBUG1("CThumbnailServerSession::RequestThumbByIdAsyncL() - end" ); |
363 TN_DEBUG1("CThumbnailServerSession::RequestThumbByIdAsyncL() - end" ); |
403 } |
364 } |
404 |
365 |
593 if(Server()->StoreForPathL(params.iFileName)->IsDiskFull()) |
556 if(Server()->StoreForPathL(params.iFileName)->IsDiskFull()) |
594 { |
557 { |
595 User::Leave( KErrDiskFull ); |
558 User::Leave( KErrDiskFull ); |
596 } |
559 } |
597 |
560 |
598 #ifdef RD_MDS_2_5 |
|
599 // try to query ID from MDS |
|
600 CThumbnailMDSQueryTask* task = new( ELeave )CThumbnailMDSQueryTask( |
|
601 Server()->Processor(), params.iPriority + 1, Server()->GetMdESession(), *Server()); |
|
602 |
|
603 CleanupStack::PushL( task ); |
|
604 task->SetUpdateToDb( EFalse ); |
|
605 task->QueryIdByPathL( params.iFileName ); |
|
606 task->SetMessageData( TThumbnailServerRequestId( this, params.iRequestId ), iMessage ); |
|
607 Server()->QueueTaskL( task ); |
|
608 CleanupStack::Pop( task ); // owned by processor now |
|
609 |
|
610 // query task is now responsible for completing the message |
|
611 iMessage = RMessage2(); |
|
612 #else |
|
613 User::Leave(err); |
561 User::Leave(err); |
614 #endif // RD_MDS_2_5 |
|
615 |
|
616 } |
562 } |
617 } |
563 } |
618 |
564 |
619 #ifdef _DEBUG |
565 #ifdef _DEBUG |
620 aStop.UniversalTime(); |
566 aStop.UniversalTime(); |
688 |
634 |
689 // source type |
635 // source type |
690 TDataType mimeType; |
636 TDataType mimeType; |
691 TInt sourceType = 0; |
637 TInt sourceType = 0; |
692 TInt err = Server()->MimeTypeFromFileExt( params.iTargetUri, mimeType ); |
638 TInt err = Server()->MimeTypeFromFileExt( params.iTargetUri, mimeType ); |
693 TBool missingIDs(EFalse); |
|
694 |
639 |
695 // get missing sizes |
640 // get missing sizes |
696 if ( err == KErrNone && ( params.iControlFlags & EThumbnailGeneratePersistentSizesOnly ) != 0 ) |
641 if ( err == KErrNone && ( params.iControlFlags & EThumbnailGeneratePersistentSizesOnly ) != 0 ) |
697 { |
642 { |
698 sourceType = Server()->SourceTypeFromMimeType( mimeType ); |
643 sourceType = Server()->SourceTypeFromMimeType( mimeType ); |
699 |
644 |
700 missingSizes = new (ELeave) RArray < TThumbnailPersistentSize >; |
645 missingSizes = new (ELeave) RArray < TThumbnailPersistentSize >; |
701 CleanupClosePushL( *missingSizes ); |
646 CleanupClosePushL( *missingSizes ); |
702 |
647 |
703 Server()->GetMissingSizesAndIDsL( params.iTargetUri, sourceType, *missingSizes, missingIDs); |
648 Server()->GetMissingSizesL( params.iTargetUri, sourceType, *missingSizes, EFalse); |
704 |
649 |
705 if ( missingSizes->Count() == 0) |
650 if ( missingSizes->Count() == 0) |
706 { |
651 { |
707 // all thumbs already exist |
652 // all thumbs already exist |
708 CleanupStack::PopAndDestroy( missingSizes ); |
653 CleanupStack::PopAndDestroy( missingSizes ); |
729 } |
674 } |
730 |
675 |
731 CThumbnailScaleTask* scaleTask = CThumbnailScaleTask::NewL( Server()->Processor(), |
676 CThumbnailScaleTask* scaleTask = CThumbnailScaleTask::NewL( Server()->Processor(), |
732 *Server(), params.iTargetUri, bitmap, bitmapSize, |
677 *Server(), params.iTargetUri, bitmap, bitmapSize, |
733 (*missingSizes)[i].iSize, (*missingSizes)[i].iCrop, params.iDisplayMode, |
678 (*missingSizes)[i].iSize, (*missingSizes)[i].iCrop, params.iDisplayMode, |
734 KMaxPriority, KNullDesC, (*missingSizes)[i].iType, params.iThumbnailId, EFalse, EFalse ); |
679 KMaxPriority, KNullDesC, (*missingSizes)[i].iType, params.iModified, EFalse, EFalse ); |
735 CleanupStack::PushL( scaleTask ); |
680 CleanupStack::PushL( scaleTask ); |
736 scaleTask->SetDoStore( ETrue ); |
681 scaleTask->SetDoStore( ETrue ); |
737 //increase priority, scale needs to run before ID update below |
|
738 scaleTask->SetPriority( params.iPriority + 1 ); |
|
739 Server()->Processor().AddTaskL( scaleTask ); |
682 Server()->Processor().AddTaskL( scaleTask ); |
740 CleanupStack::Pop( scaleTask ); |
683 CleanupStack::Pop( scaleTask ); |
741 |
684 |
742 if( i == count-1 ) |
685 if( i == count-1 ) |
743 { |
686 { |
744 // scaleTask is now responsible for completing the RMessage |
687 // scaleTask is now responsible for completing the RMessage |
745 scaleTask->SetMessageData( reqId, iMessage ); |
688 scaleTask->SetMessageData( reqId, iMessage ); |
746 iMessage = RMessage2(); |
689 iMessage = RMessage2(); |
747 } |
690 } |
748 } |
691 } |
749 |
|
750 TN_DEBUG3("CThumbnailServerSession::RequestSetThumbnailByBitmapL() ID = %d, missingIDs = %d", params.iThumbnailId, missingIDs); |
|
751 } |
692 } |
752 else |
693 else |
753 { |
694 { |
754 // complete message |
695 // complete message |
755 aMessage.Complete( KErrNone ); |
696 aMessage.Complete( KErrNone ); |
765 |
706 |
766 Server()->DeleteBitmapFromPool( iBitmapHandle ); |
707 Server()->DeleteBitmapFromPool( iBitmapHandle ); |
767 iBitmapHandle = 0; |
708 iBitmapHandle = 0; |
768 bitmap = NULL; |
709 bitmap = NULL; |
769 } |
710 } |
770 |
|
771 // ----------------------------------------------------------------------------- |
|
772 // CThumbnailServerSession::CreateThumbnailsL() |
|
773 // Create thumbnails for given object file |
|
774 // ----------------------------------------------------------------------------- |
|
775 // |
|
776 void CThumbnailServerSession::CreateThumbnailsL( const RMessage2& aMessage ) |
|
777 { |
|
778 RFile64 file; |
|
779 CleanupClosePushL( file ); |
|
780 User::LeaveIfError( file.AdoptFromClient( aMessage, 1, 2 )); |
|
781 |
|
782 CreateGenerateTaskFromFileHandleL( &file); |
|
783 |
|
784 CleanupStack::Pop( &file ); |
|
785 } |
|
786 |
|
787 |
711 |
788 // ----------------------------------------------------------------------------- |
712 // ----------------------------------------------------------------------------- |
789 // CThumbnailServerSession::CreateGenerateTaskL() |
713 // CThumbnailServerSession::CreateGenerateTaskL() |
790 // Create a task to generate a new thumbnail |
714 // Create a task to generate a new thumbnail |
791 // ----------------------------------------------------------------------------- |
715 // ----------------------------------------------------------------------------- |
799 |
723 |
800 if(Server()->StoreForPathL(params.iFileName)->IsDiskFull()) |
724 if(Server()->StoreForPathL(params.iFileName)->IsDiskFull()) |
801 { |
725 { |
802 User::Leave( KErrDiskFull ); |
726 User::Leave( KErrDiskFull ); |
803 } |
727 } |
804 |
|
805 TBool missingIDs = EFalse; |
|
806 |
728 |
807 RArray < TThumbnailPersistentSize >* missingSizes = NULL; |
729 RArray < TThumbnailPersistentSize >* missingSizes = NULL; |
808 |
730 |
809 // get missing sizes |
731 // get missing sizes |
810 if ( ( params.iControlFlags & EThumbnailGeneratePersistentSizesOnly ) != 0 ) |
732 if ( ( params.iControlFlags & EThumbnailGeneratePersistentSizesOnly ) != 0 ) |
811 { |
733 { |
812 TInt sourceType = TThumbnailPersistentSize::EUnknownSourceType; |
734 TInt sourceType = TThumbnailPersistentSize::EUnknownSourceType; |
813 sourceType = Server()->SourceTypeFromMimeType( params.iMimeType ); |
735 sourceType = Server()->SourceTypeFromMimeType( params.iMimeType ); |
814 missingSizes = new (ELeave) RArray < TThumbnailPersistentSize >; |
736 missingSizes = new (ELeave) RArray < TThumbnailPersistentSize >; |
815 CleanupClosePushL( *missingSizes ); |
737 CleanupClosePushL( *missingSizes ); |
816 |
738 |
817 Server()->GetMissingSizesAndIDsL( params.iFileName, sourceType, *missingSizes, missingIDs ); |
739 |
818 #ifdef RD_MDS_2_5 |
740 TBool gridSizeOnly(EFalse); |
819 if( missingIDs ) |
|
820 { |
|
821 TN_DEBUG1("CThumbnailServerSession::CreateGenerateTaskFromFileHandleL() some IDs missing"); |
|
822 |
741 |
823 if( params.iThumbnailId == KNoId) |
742 if ( params.iQualityPreference == CThumbnailManager |
824 { |
743 ::EOptimizeForQualityWithPreview ) |
825 TN_DEBUG1("CThumbnailServerSession::CreateGenerateTaskFromFileHandleL() query fro MDS"); |
744 { |
826 // try to query ID from MDS |
745 gridSizeOnly = ETrue; |
827 CThumbnailMDSQueryTask* task = new( ELeave )CThumbnailMDSQueryTask( |
746 } |
828 Server()->Processor(), params.iPriority + 1, Server()->GetMdESession(), *Server()); |
747 |
829 |
748 Server()->GetMissingSizesL( params.iFileName, sourceType, *missingSizes, gridSizeOnly); |
830 CleanupStack::PushL( task ); |
|
831 task->QueryIdByPathL( params.iFileName ); |
|
832 |
|
833 task->SetMessageData( TThumbnailServerRequestId( this, params.iRequestId ) ); |
|
834 Server()->QueueTaskL( task ); |
|
835 CleanupStack::Pop( task ); // owned by processor now |
|
836 TN_DEBUG1("CThumbnailServerSession::CreateGenerateTaskFromFileHandleL() query from MDS queued" ); |
|
837 } |
|
838 else |
|
839 { |
|
840 TN_DEBUG2("CThumbnailServerSession::CreateGenerateTaskFromFileHandleL() got ID %d from params", params.iThumbnailId); |
|
841 TRAP_IGNORE( Server()->UpdateIDL(params.iFileName, params.iThumbnailId ) ); |
|
842 } |
|
843 } |
|
844 #endif // RD_MDS_2_5 |
|
845 |
749 |
846 if ( missingSizes->Count() == 0) |
750 if ( missingSizes->Count() == 0) |
847 { |
751 { |
848 // all thumbs already exist |
752 // all thumbs already exist |
849 CleanupStack::PopAndDestroy( missingSizes ); |
753 CleanupStack::PopAndDestroy( missingSizes ); |
871 } |
775 } |
872 CleanupClosePushL( *aFile ); |
776 CleanupClosePushL( *aFile ); |
873 CThumbnailGenerateTask* task = new( ELeave )CThumbnailGenerateTask( Server() |
777 CThumbnailGenerateTask* task = new( ELeave )CThumbnailGenerateTask( Server() |
874 ->Processor(), * Server(), aFile, NULL, ¶ms.iMimeType, params.iFlags, |
778 ->Processor(), * Server(), aFile, NULL, ¶ms.iMimeType, params.iFlags, |
875 params.iSize, params.iDisplayMode, priority, missingSizes, params.iTargetUri, |
779 params.iSize, params.iDisplayMode, priority, missingSizes, params.iTargetUri, |
876 params.iThumbnailSize, params.iThumbnailId, params.iQualityPreference ); |
780 params.iThumbnailSize, params.iModified, params.iQualityPreference ); |
877 |
781 |
878 // do not store bitmaps to server pool when generating only |
782 // do not store bitmaps to server pool when generating only |
879 if( params.iControlFlags & EThumbnailGeneratePersistentSizesOnly ) |
783 if( params.iControlFlags & EThumbnailGeneratePersistentSizesOnly ) |
880 { |
784 { |
881 task->ScaledBitmapToPool( EFalse ); |
785 task->ScaledBitmapToPool( EFalse ); |
948 if ( ( params.iControlFlags & EThumbnailGeneratePersistentSizesOnly ) != 0 ) |
852 if ( ( params.iControlFlags & EThumbnailGeneratePersistentSizesOnly ) != 0 ) |
949 { |
853 { |
950 missingSizes = new (ELeave) RArray < TThumbnailPersistentSize >; |
854 missingSizes = new (ELeave) RArray < TThumbnailPersistentSize >; |
951 CleanupClosePushL( *missingSizes ); |
855 CleanupClosePushL( *missingSizes ); |
952 |
856 |
953 TBool missingIDs; |
857 Server()->GetMissingSizesL( params.iTargetUri, sourceType, *missingSizes, EFalse ); |
954 Server()->GetMissingSizesAndIDsL( params.iTargetUri, sourceType, *missingSizes, missingIDs ); |
|
955 |
858 |
956 if ( missingSizes->Count() == 0) |
859 if ( missingSizes->Count() == 0) |
957 { |
860 { |
958 // all thumbs already exist |
861 // all thumbs already exist |
959 CleanupStack::PopAndDestroy( missingSizes ); |
862 CleanupStack::PopAndDestroy( missingSizes ); |
982 } |
885 } |
983 |
886 |
984 CThumbnailGenerateTask* task = new( ELeave )CThumbnailGenerateTask( Server() |
887 CThumbnailGenerateTask* task = new( ELeave )CThumbnailGenerateTask( Server() |
985 ->Processor(), * Server(), NULL, aBuffer, ¶ms.iMimeType, params.iFlags, |
888 ->Processor(), * Server(), NULL, aBuffer, ¶ms.iMimeType, params.iFlags, |
986 params.iSize, params.iDisplayMode, priority, missingSizes, params.iTargetUri, |
889 params.iSize, params.iDisplayMode, priority, missingSizes, params.iTargetUri, |
987 params.iThumbnailSize, params.iThumbnailId, params.iQualityPreference ); |
890 params.iThumbnailSize, params.iModified, params.iQualityPreference ); |
988 |
891 |
989 // do not store bitmaps to server pool when generating only |
892 // do not store bitmaps to server pool when generating only |
990 if( params.iControlFlags & EThumbnailGeneratePersistentSizesOnly ) |
893 if( params.iControlFlags & EThumbnailGeneratePersistentSizesOnly ) |
991 { |
894 { |
992 task->ScaledBitmapToPool( EFalse ); |
895 task->ScaledBitmapToPool( EFalse ); |
1028 params.iSize = persistentSize.iSize; |
931 params.iSize = persistentSize.iSize; |
1029 } |
932 } |
1030 |
933 |
1031 if( params.iFileName != KNullDesC ) |
934 if( params.iFileName != KNullDesC ) |
1032 { |
935 { |
1033 TN_DEBUG4( "CThumbnailServerSession::FetchThumbnailL( TNId==%d ThumbnailSize=%d ( Path=%S ))", |
936 TN_DEBUG3( "CThumbnailServerSession::FetchThumbnailL( ThumbnailSize=%d ( Path=%S ))", |
1034 params.iThumbnailId, params.iThumbnailSize, ¶ms.iFileName ); |
937 params.iThumbnailSize, ¶ms.iFileName ); |
1035 Server()->FetchThumbnailL( params.iFileName, iBitmap, iBuffer, params.iThumbnailSize, iOriginalSize); |
938 Server()->FetchThumbnailL( params.iFileName, iBitmap, iBuffer, params.iThumbnailSize, iOriginalSize); |
1036 } |
939 } |
1037 else |
940 else |
1038 { |
941 { |
1039 TN_DEBUG3( "CThumbnailServerSession::FetchThumbnailL(Path=%S ThumbnailSize=%d)", |
942 User::Leave( KErrNotSupported ); |
1040 ¶ms.iFileName, params.iThumbnailSize ); |
|
1041 Server()->FetchThumbnailL( params.iThumbnailId, iBitmap, iBuffer, params.iThumbnailSize, iOriginalSize ); |
|
1042 } |
943 } |
1043 #ifdef _DEBUG |
944 #ifdef _DEBUG |
1044 if( iBitmap) |
945 if( iBitmap) |
1045 { |
946 { |
1046 TN_DEBUG4( "CThumbnailServerSession::FetchThumbnailL() size %d x %d displaymode %d", iBitmap->SizeInPixels().iWidth, iBitmap->SizeInPixels().iHeight, iBitmap->DisplayMode()); |
947 TN_DEBUG4( "CThumbnailServerSession::FetchThumbnailL() size %d x %d displaymode %d", iBitmap->SizeInPixels().iWidth, iBitmap->SizeInPixels().iHeight, iBitmap->DisplayMode()); |
1062 if ( params.iTargetUri != KNullDesC && params.iFileName != KNullDesC && |
963 if ( params.iTargetUri != KNullDesC && params.iFileName != KNullDesC && |
1063 params.iFileName.CompareF(params.iTargetUri) != 0 ) |
964 params.iFileName.CompareF(params.iTargetUri) != 0 ) |
1064 { |
965 { |
1065 Server()->StoreThumbnailL( params.iTargetUri, iBitmap, iOriginalSize, |
966 Server()->StoreThumbnailL( params.iTargetUri, iBitmap, iOriginalSize, |
1066 params.iFlags& CThumbnailManager::ECropToAspectRatio, |
967 params.iFlags& CThumbnailManager::ECropToAspectRatio, |
1067 params.iThumbnailSize, params.iThumbnailId, |
968 params.iThumbnailSize, params.iModified, |
1068 EFalse, EFalse); |
969 EFalse, EFalse); |
1069 } |
970 } |
1070 |
971 |
1071 if ( ClientThreadAlive(iMessage) ) |
972 if ( ClientThreadAlive(iMessage) ) |
1072 { |
973 { |
1189 |
1090 |
1190 // read message params |
1091 // read message params |
1191 aMessage.ReadL( 0, iRequestParams ); |
1092 aMessage.ReadL( 0, iRequestParams ); |
1192 const TThumbnailRequestParams& params = iRequestParams(); |
1093 const TThumbnailRequestParams& params = iRequestParams(); |
1193 |
1094 |
1194 TThumbnailId id = params.iThumbnailId; |
1095 |
1195 Server()->DeleteThumbnailsByIdL( id ); |
1096 #ifdef RD_MDS_2_5 |
1196 |
1097 // try to query path from MDS |
|
1098 CThumbnailMDSQueryTask* task = new( ELeave )CThumbnailMDSQueryTask( |
|
1099 Server()->Processor(), params.iPriority + 1, Server()->GetMdESession(), *Server()); |
|
1100 |
|
1101 CleanupStack::PushL( task ); |
|
1102 task->QueryPathByIdL(params.iThumbnailId, ETrue); |
|
1103 Server()->QueueTaskL( task ); |
|
1104 CleanupStack::Pop( task ); // owned by processor now |
|
1105 #endif // RD_MDS_2_5 |
1197 aMessage.Complete( KErrNone ); |
1106 aMessage.Complete( KErrNone ); |
1198 iMessage = RMessage2(); |
1107 iMessage = RMessage2(); |
1199 } |
1108 } |
1200 |
1109 |
1201 // ----------------------------------------------------------------------------- |
1110 // ----------------------------------------------------------------------------- |