# HG changeset patch # User hgs # Date 1278593105 -10800 # Node ID d429f823a6b77af3d4105540a00bbd891d9d61fc # Parent b67379558a75dd8891bf5062890031a508d5d7c8 201027 diff -r b67379558a75 -r d429f823a6b7 imagehandling_plat/thumbnailmanager_api/tsrc/Bmarm/ThumbnailManagerTestU.DEF --- a/imagehandling_plat/thumbnailmanager_api/tsrc/Bmarm/ThumbnailManagerTestU.DEF Tue Jul 06 14:37:18 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - LibEntryL__FR13CTestModuleIf @ 1 NONAME R3UNUSED ; LibEntryL(CTestModuleIf &) - diff -r b67379558a75 -r d429f823a6b7 imagehandling_plat/thumbnailmanager_api/tsrc/Bmarm/ThumbnailManagerTestu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imagehandling_plat/thumbnailmanager_api/tsrc/Bmarm/ThumbnailManagerTestu.def Thu Jul 08 15:45:05 2010 +0300 @@ -0,0 +1,3 @@ +EXPORTS + LibEntryL__FR13CTestModuleIf @ 1 NONAME R3UNUSED ; LibEntryL(CTestModuleIf &) + diff -r b67379558a75 -r d429f823a6b7 imagehandling_plat/thumbnailmanager_api/tsrc/Bwins/ThumbnailManagerTestU.DEF --- a/imagehandling_plat/thumbnailmanager_api/tsrc/Bwins/ThumbnailManagerTestU.DEF Tue Jul 06 14:37:18 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - ?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * __cdecl LibEntryL(class CTestModuleIf &) - diff -r b67379558a75 -r d429f823a6b7 imagehandling_plat/thumbnailmanager_api/tsrc/Bwins/ThumbnailManagerTestu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imagehandling_plat/thumbnailmanager_api/tsrc/Bwins/ThumbnailManagerTestu.def Thu Jul 08 15:45:05 2010 +0300 @@ -0,0 +1,3 @@ +EXPORTS + ?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * __cdecl LibEntryL(class CTestModuleIf &) + diff -r b67379558a75 -r d429f823a6b7 imagehandling_plat/thumbnailmanager_api/tsrc/EABI/ThumbnailManagerTestU.def --- a/imagehandling_plat/thumbnailmanager_api/tsrc/EABI/ThumbnailManagerTestU.def Tue Jul 06 14:37:18 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -EXPORTS - _Z9LibEntryLR13CTestModuleIf @ 1 NONAME - _ZTI16CThumbnailCenRep @ 2 NONAME ; ## - _ZTV16CThumbnailCenRep @ 3 NONAME ; ## - diff -r b67379558a75 -r d429f823a6b7 imagehandling_plat/thumbnailmanager_api/tsrc/eabi/ThumbnailManagerTestu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imagehandling_plat/thumbnailmanager_api/tsrc/eabi/ThumbnailManagerTestu.def Thu Jul 08 15:45:05 2010 +0300 @@ -0,0 +1,5 @@ +EXPORTS + _Z9LibEntryLR13CTestModuleIf @ 1 NONAME + _ZTI16CThumbnailCenRep @ 2 NONAME ; ## + _ZTV16CThumbnailCenRep @ 3 NONAME ; ## + diff -r b67379558a75 -r d429f823a6b7 imagehandlinglib/BWINS/IHLU.DEF --- a/imagehandlinglib/BWINS/IHLU.DEF Tue Jul 06 14:37:18 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -EXPORTS - ?CopyBitmapL@IHLBitmapUtil@@SAPAVCFbsBitmap@@ABV2@@Z @ 1 NONAME ; class CFbsBitmap * IHLBitmapUtil::CopyBitmapL(class CFbsBitmap const &) - ?CopyBitmapL@IHLBitmapUtil@@SAPAVCFbsBitmap@@ABV2@ABVTRect@@@Z @ 2 NONAME ; class CFbsBitmap * IHLBitmapUtil::CopyBitmapL(class CFbsBitmap const &, class TRect const &) - ?CopyBitmapLC@IHLBitmapUtil@@SAPAVCFbsBitmap@@ABV2@@Z @ 3 NONAME ; class CFbsBitmap * IHLBitmapUtil::CopyBitmapLC(class CFbsBitmap const &) - ?CopyBitmapLC@IHLBitmapUtil@@SAPAVCFbsBitmap@@ABV2@ABVTRect@@@Z @ 4 NONAME ; class CFbsBitmap * IHLBitmapUtil::CopyBitmapLC(class CFbsBitmap const &, class TRect const &) - ?CreateBitmapProcessorL@IHLProcessorFactory@@SAPAVMIHLBitmapProcessor@@K@Z @ 5 NONAME ; class MIHLBitmapProcessor * IHLProcessorFactory::CreateBitmapProcessorL(unsigned long) - ?CreateImageViewerL@IHLViewerFactory@@SAPAVMIHLImageViewer@@ABVTSize@@AAVMIHLImage@@AAVMIHLBitmap@@AAVMIHLViewerObserver@@K@Z @ 6 NONAME ; class MIHLImageViewer * IHLViewerFactory::CreateImageViewerL(class TSize const &, class MIHLImage &, class MIHLBitmap &, class MIHLViewerObserver &, unsigned long) - ?CreateL@IHLBitmap@@SAPAVMIHLBitmap@@XZ @ 7 NONAME ; class MIHLBitmap * IHLBitmap::CreateL(void) - ?CreateL@IHLScaler@@SAPAVMIHLScaler@@K@Z @ 8 NONAME ; class MIHLScaler * IHLScaler::CreateL(unsigned long) - ?DuplicateBitmapL@IHLBitmapUtil@@SAPAVCFbsBitmap@@ABV2@@Z @ 9 NONAME ; class CFbsBitmap * IHLBitmapUtil::DuplicateBitmapL(class CFbsBitmap const &) - ?DuplicateBitmapLC@IHLBitmapUtil@@SAPAVCFbsBitmap@@ABV2@@Z @ 10 NONAME ; class CFbsBitmap * IHLBitmapUtil::DuplicateBitmapLC(class CFbsBitmap const &) - ?OpenFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFile@@@Z @ 11 NONAME ; class MIHLFileImage * IHLImageFactory::OpenFileImageL(class RFile &) - ?OpenFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFile@@H@Z @ 12 NONAME ; class MIHLFileImage * IHLImageFactory::OpenFileImageL(class RFile &, int) - ?OpenFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFs@@ABVTDesC16@@@Z @ 13 NONAME ; class MIHLFileImage * IHLImageFactory::OpenFileImageL(class RFs &, class TDesC16 const &) - ?OpenFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFs@@ABVTDesC16@@H@Z @ 14 NONAME ; class MIHLFileImage * IHLImageFactory::OpenFileImageL(class RFs &, class TDesC16 const &, int) - ?ScaleBitmap@IHLBitmapUtil@@SAHABVCFbsBitmap@@AAV2@K@Z @ 15 NONAME ; int IHLBitmapUtil::ScaleBitmap(class CFbsBitmap const &, class CFbsBitmap &, unsigned long) - ?ScaleBitmap@IHLBitmapUtil@@SAHABVCFbsBitmap@@ABVTRect@@AAV2@1K@Z @ 16 NONAME ; int IHLBitmapUtil::ScaleBitmap(class CFbsBitmap const &, class TRect const &, class CFbsBitmap &, class TRect const &, unsigned long) - ?OpenFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFile@@HK@Z @ 17 NONAME ; class MIHLFileImage * IHLImageFactory::OpenFileImageL(class RFile &, int, unsigned long) - ?OpenFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFs@@ABVTDesC16@@HK@Z @ 18 NONAME ; class MIHLFileImage * IHLImageFactory::OpenFileImageL(class RFs &, class TDesC16 const &, int, unsigned long) - ?OpenBufferedFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFs@@ABVTDesC8@@@Z @ 19 NONAME ; class MIHLFileImage * IHLImageFactory::OpenBufferedFileImageL(class RFs &, class TDesC8 const &) - ?OpenBufferedFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFs@@ABVTDesC8@@H@Z @ 20 NONAME ; class MIHLFileImage * IHLImageFactory::OpenBufferedFileImageL(class RFs &, class TDesC8 const &, int) - ?OpenBufferedFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFs@@ABVTDesC8@@HK@Z @ 21 NONAME ; class MIHLFileImage * IHLImageFactory::OpenBufferedFileImageL(class RFs &, class TDesC8 const &, int, unsigned long) - diff -r b67379558a75 -r d429f823a6b7 imagehandlinglib/BWINS/IHLu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imagehandlinglib/BWINS/IHLu.def Thu Jul 08 15:45:05 2010 +0300 @@ -0,0 +1,23 @@ +EXPORTS + ?CopyBitmapL@IHLBitmapUtil@@SAPAVCFbsBitmap@@ABV2@@Z @ 1 NONAME ; class CFbsBitmap * IHLBitmapUtil::CopyBitmapL(class CFbsBitmap const &) + ?CopyBitmapL@IHLBitmapUtil@@SAPAVCFbsBitmap@@ABV2@ABVTRect@@@Z @ 2 NONAME ; class CFbsBitmap * IHLBitmapUtil::CopyBitmapL(class CFbsBitmap const &, class TRect const &) + ?CopyBitmapLC@IHLBitmapUtil@@SAPAVCFbsBitmap@@ABV2@@Z @ 3 NONAME ; class CFbsBitmap * IHLBitmapUtil::CopyBitmapLC(class CFbsBitmap const &) + ?CopyBitmapLC@IHLBitmapUtil@@SAPAVCFbsBitmap@@ABV2@ABVTRect@@@Z @ 4 NONAME ; class CFbsBitmap * IHLBitmapUtil::CopyBitmapLC(class CFbsBitmap const &, class TRect const &) + ?CreateBitmapProcessorL@IHLProcessorFactory@@SAPAVMIHLBitmapProcessor@@K@Z @ 5 NONAME ; class MIHLBitmapProcessor * IHLProcessorFactory::CreateBitmapProcessorL(unsigned long) + ?CreateImageViewerL@IHLViewerFactory@@SAPAVMIHLImageViewer@@ABVTSize@@AAVMIHLImage@@AAVMIHLBitmap@@AAVMIHLViewerObserver@@K@Z @ 6 NONAME ; class MIHLImageViewer * IHLViewerFactory::CreateImageViewerL(class TSize const &, class MIHLImage &, class MIHLBitmap &, class MIHLViewerObserver &, unsigned long) + ?CreateL@IHLBitmap@@SAPAVMIHLBitmap@@XZ @ 7 NONAME ; class MIHLBitmap * IHLBitmap::CreateL(void) + ?CreateL@IHLScaler@@SAPAVMIHLScaler@@K@Z @ 8 NONAME ; class MIHLScaler * IHLScaler::CreateL(unsigned long) + ?DuplicateBitmapL@IHLBitmapUtil@@SAPAVCFbsBitmap@@ABV2@@Z @ 9 NONAME ; class CFbsBitmap * IHLBitmapUtil::DuplicateBitmapL(class CFbsBitmap const &) + ?DuplicateBitmapLC@IHLBitmapUtil@@SAPAVCFbsBitmap@@ABV2@@Z @ 10 NONAME ; class CFbsBitmap * IHLBitmapUtil::DuplicateBitmapLC(class CFbsBitmap const &) + ?OpenFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFile@@@Z @ 11 NONAME ; class MIHLFileImage * IHLImageFactory::OpenFileImageL(class RFile &) + ?OpenFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFile@@H@Z @ 12 NONAME ; class MIHLFileImage * IHLImageFactory::OpenFileImageL(class RFile &, int) + ?OpenFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFs@@ABVTDesC16@@@Z @ 13 NONAME ; class MIHLFileImage * IHLImageFactory::OpenFileImageL(class RFs &, class TDesC16 const &) + ?OpenFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFs@@ABVTDesC16@@H@Z @ 14 NONAME ; class MIHLFileImage * IHLImageFactory::OpenFileImageL(class RFs &, class TDesC16 const &, int) + ?ScaleBitmap@IHLBitmapUtil@@SAHABVCFbsBitmap@@AAV2@K@Z @ 15 NONAME ; int IHLBitmapUtil::ScaleBitmap(class CFbsBitmap const &, class CFbsBitmap &, unsigned long) + ?ScaleBitmap@IHLBitmapUtil@@SAHABVCFbsBitmap@@ABVTRect@@AAV2@1K@Z @ 16 NONAME ; int IHLBitmapUtil::ScaleBitmap(class CFbsBitmap const &, class TRect const &, class CFbsBitmap &, class TRect const &, unsigned long) + ?OpenFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFile@@HK@Z @ 17 NONAME ; class MIHLFileImage * IHLImageFactory::OpenFileImageL(class RFile &, int, unsigned long) + ?OpenFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFs@@ABVTDesC16@@HK@Z @ 18 NONAME ; class MIHLFileImage * IHLImageFactory::OpenFileImageL(class RFs &, class TDesC16 const &, int, unsigned long) + ?OpenBufferedFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFs@@ABVTDesC8@@@Z @ 19 NONAME ; class MIHLFileImage * IHLImageFactory::OpenBufferedFileImageL(class RFs &, class TDesC8 const &) + ?OpenBufferedFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFs@@ABVTDesC8@@H@Z @ 20 NONAME ; class MIHLFileImage * IHLImageFactory::OpenBufferedFileImageL(class RFs &, class TDesC8 const &, int) + ?OpenBufferedFileImageL@IHLImageFactory@@SAPAVMIHLFileImage@@AAVRFs@@ABVTDesC8@@HK@Z @ 21 NONAME ; class MIHLFileImage * IHLImageFactory::OpenBufferedFileImageL(class RFs &, class TDesC8 const &, int, unsigned long) + diff -r b67379558a75 -r d429f823a6b7 imagehandlinglib/EABI/IHLU.DEF --- a/imagehandlinglib/EABI/IHLU.DEF Tue Jul 06 14:37:18 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -EXPORTS - _ZN13IHLBitmapUtil11CopyBitmapLERK10CFbsBitmap @ 1 NONAME - _ZN13IHLBitmapUtil11CopyBitmapLERK10CFbsBitmapRK5TRect @ 2 NONAME - _ZN13IHLBitmapUtil11ScaleBitmapERK10CFbsBitmapRK5TRectRS0_S5_m @ 3 NONAME - _ZN13IHLBitmapUtil11ScaleBitmapERK10CFbsBitmapRS0_m @ 4 NONAME - _ZN13IHLBitmapUtil12CopyBitmapLCERK10CFbsBitmap @ 5 NONAME - _ZN13IHLBitmapUtil12CopyBitmapLCERK10CFbsBitmapRK5TRect @ 6 NONAME - _ZN13IHLBitmapUtil16DuplicateBitmapLERK10CFbsBitmap @ 7 NONAME - _ZN13IHLBitmapUtil17DuplicateBitmapLCERK10CFbsBitmap @ 8 NONAME - _ZN15IHLImageFactory14OpenFileImageLER3RFsRK7TDesC16 @ 9 NONAME - _ZN15IHLImageFactory14OpenFileImageLER3RFsRK7TDesC16i @ 10 NONAME - _ZN15IHLImageFactory14OpenFileImageLER5RFile @ 11 NONAME - _ZN15IHLImageFactory14OpenFileImageLER5RFilei @ 12 NONAME - _ZN16IHLViewerFactory18CreateImageViewerLERK5TSizeR9MIHLImageR10MIHLBitmapR18MIHLViewerObserverm @ 13 NONAME - _ZN19IHLProcessorFactory22CreateBitmapProcessorLEm @ 14 NONAME - _ZN9IHLBitmap7CreateLEv @ 15 NONAME - _ZN9IHLScaler7CreateLEm @ 16 NONAME - _ZN15IHLImageFactory14OpenFileImageLER3RFsRK7TDesC16im @ 17 NONAME - _ZN15IHLImageFactory14OpenFileImageLER5RFileim @ 18 NONAME - _ZN15IHLImageFactory22OpenBufferedFileImageLER3RFsRK6TDesC8 @ 19 NONAME - _ZN15IHLImageFactory22OpenBufferedFileImageLER3RFsRK6TDesC8i @ 20 NONAME - _ZN15IHLImageFactory22OpenBufferedFileImageLER3RFsRK6TDesC8im @ 21 NONAME - diff -r b67379558a75 -r d429f823a6b7 imagehandlinglib/Src/IHLDebugPrint.h --- a/imagehandlinglib/Src/IHLDebugPrint.h Tue Jul 06 14:37:18 2010 +0300 +++ b/imagehandlinglib/Src/IHLDebugPrint.h Thu Jul 08 15:45:05 2010 +0300 @@ -59,7 +59,7 @@ /** * Macro for defining debug-only literal strings (empty release version) */ - #define IHL_DEBUG_STRING(name, s) const TIHLEmptyDebugString name + #define IHL_DEBUG_STRING(name, s) const TIHLEmptyDebugString name = {} /** * Output to debugger output (empty) diff -r b67379558a75 -r d429f823a6b7 imagehandlinglib/eabi/IHLu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imagehandlinglib/eabi/IHLu.def Thu Jul 08 15:45:05 2010 +0300 @@ -0,0 +1,23 @@ +EXPORTS + _ZN13IHLBitmapUtil11CopyBitmapLERK10CFbsBitmap @ 1 NONAME + _ZN13IHLBitmapUtil11CopyBitmapLERK10CFbsBitmapRK5TRect @ 2 NONAME + _ZN13IHLBitmapUtil11ScaleBitmapERK10CFbsBitmapRK5TRectRS0_S5_m @ 3 NONAME + _ZN13IHLBitmapUtil11ScaleBitmapERK10CFbsBitmapRS0_m @ 4 NONAME + _ZN13IHLBitmapUtil12CopyBitmapLCERK10CFbsBitmap @ 5 NONAME + _ZN13IHLBitmapUtil12CopyBitmapLCERK10CFbsBitmapRK5TRect @ 6 NONAME + _ZN13IHLBitmapUtil16DuplicateBitmapLERK10CFbsBitmap @ 7 NONAME + _ZN13IHLBitmapUtil17DuplicateBitmapLCERK10CFbsBitmap @ 8 NONAME + _ZN15IHLImageFactory14OpenFileImageLER3RFsRK7TDesC16 @ 9 NONAME + _ZN15IHLImageFactory14OpenFileImageLER3RFsRK7TDesC16i @ 10 NONAME + _ZN15IHLImageFactory14OpenFileImageLER5RFile @ 11 NONAME + _ZN15IHLImageFactory14OpenFileImageLER5RFilei @ 12 NONAME + _ZN16IHLViewerFactory18CreateImageViewerLERK5TSizeR9MIHLImageR10MIHLBitmapR18MIHLViewerObserverm @ 13 NONAME + _ZN19IHLProcessorFactory22CreateBitmapProcessorLEm @ 14 NONAME + _ZN9IHLBitmap7CreateLEv @ 15 NONAME + _ZN9IHLScaler7CreateLEm @ 16 NONAME + _ZN15IHLImageFactory14OpenFileImageLER3RFsRK7TDesC16im @ 17 NONAME + _ZN15IHLImageFactory14OpenFileImageLER5RFileim @ 18 NONAME + _ZN15IHLImageFactory22OpenBufferedFileImageLER3RFsRK6TDesC8 @ 19 NONAME + _ZN15IHLImageFactory22OpenBufferedFileImageLER3RFsRK6TDesC8i @ 20 NONAME + _ZN15IHLImageFactory22OpenBufferedFileImageLER3RFsRK6TDesC8im @ 21 NONAME + diff -r b67379558a75 -r d429f823a6b7 imagehandlingutilities/thumbnailmanager/plugins/audio/src/thumbnailaudioprovider.cpp --- a/imagehandlingutilities/thumbnailmanager/plugins/audio/src/thumbnailaudioprovider.cpp Tue Jul 06 14:37:18 2010 +0300 +++ b/imagehandlingutilities/thumbnailmanager/plugins/audio/src/thumbnailaudioprovider.cpp Thu Jul 08 15:45:05 2010 +0300 @@ -152,6 +152,7 @@ { TN_DEBUG1( "CThumbnailAudioProvider::GetThumbnailL() - buffer no mime" ); __ASSERT_DEBUG((EFalse), User::Panic(_L("CThumbnailAudioProvider::GetThumbnailL"), KErrNotSupported)); + User::Leave( KErrNotSupported ); } // --------------------------------------------------------------------------- diff -r b67379558a75 -r d429f823a6b7 imagehandlingutilities/thumbnailmanager/plugins/audio/src/thumbnailimagedecoderv3.cpp --- a/imagehandlingutilities/thumbnailmanager/plugins/audio/src/thumbnailimagedecoderv3.cpp Tue Jul 06 14:37:18 2010 +0300 +++ b/imagehandlingutilities/thumbnailmanager/plugins/audio/src/thumbnailimagedecoderv3.cpp Thu Jul 08 15:45:05 2010 +0300 @@ -216,7 +216,7 @@ iDecoder = NULL; CImageDecoder::TOptions options = ( CImageDecoder::TOptions )( - CImageDecoder::EOptionNoDither | CImageDecoder::EPreferFastDecode | CImageDecoder::EOptionAlwaysThread ); + CImageDecoder::EOptionNoDither ); TRAPD( decErr, iDecoder = CExtJpegDecoder::DataNewL( CExtJpegDecoder::EHwImplementation, iFs, *iBuffer, options )); diff -r b67379558a75 -r d429f823a6b7 imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoder.cpp --- a/imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoder.cpp Tue Jul 06 14:37:18 2010 +0300 +++ b/imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoder.cpp Thu Jul 08 15:45:05 2010 +0300 @@ -377,12 +377,12 @@ if ( aFlags == CThumbnailManager::EOptimizeForQuality ) { options = ( CImageDecoder::TOptions )( CImageDecoder - ::EOptionNoDither | CImageDecoder::EOptionAlwaysThread ); + ::EOptionNoDither ); } else { options = ( CImageDecoder::TOptions )( CImageDecoder - ::EOptionNoDither | CImageDecoder::EPreferFastDecode | CImageDecoder::EOptionAlwaysThread ); + ::EOptionNoDither | CImageDecoder::EPreferFastDecode ); } if ( IsSvg()) @@ -576,12 +576,12 @@ CImageDecoder::TOptions options; if ( aFlags == CThumbnailManager::EOptimizeForQuality ) { - options = ( CImageDecoder::TOptions )( CImageDecoder::EOptionNoDither | CImageDecoder::EOptionAlwaysThread ); + options = ( CImageDecoder::TOptions )( CImageDecoder::EOptionNoDither ); } else { options = ( CImageDecoder::TOptions )( CImageDecoder::EOptionNoDither | - CImageDecoder::EPreferFastDecode | CImageDecoder::EOptionAlwaysThread ); + CImageDecoder::EPreferFastDecode ); } TRAPD( err, iDecoder = CExtJpegDecoder::DataNewL( iFs, * iExifThumbImage, options )); diff -r b67379558a75 -r d429f823a6b7 imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoderv2.cpp --- a/imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoderv2.cpp Tue Jul 06 14:37:18 2010 +0300 +++ b/imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoderv2.cpp Thu Jul 08 15:45:05 2010 +0300 @@ -170,7 +170,7 @@ iDecoder = NULL; CImageDecoder::TOptions options = ( CImageDecoder::TOptions )( - CImageDecoder::EOptionNoDither | CImageDecoder::EPreferFastDecode | CImageDecoder::EOptionAlwaysThread ); + CImageDecoder::EOptionNoDither ); TRAPD( decErr, iDecoder = CExtJpegDecoder::DataNewL( CExtJpegDecoder::EHwImplementation, iFs, *iBuffer, options )); diff -r b67379558a75 -r d429f823a6b7 imagehandlingutilities/thumbnailmanager/thumbagdaemon/inc/thumbagprocessor.h --- a/imagehandlingutilities/thumbnailmanager/thumbagdaemon/inc/thumbagprocessor.h Tue Jul 06 14:37:18 2010 +0300 +++ b/imagehandlingutilities/thumbnailmanager/thumbagdaemon/inc/thumbagprocessor.h Thu Jul 08 15:45:05 2010 +0300 @@ -62,7 +62,8 @@ struct TThumbnailGenerationItem { - inline TThumbnailGenerationItem(): iItemId( KErrNotFound ), iItemType(EGenerationItemTypeUnknown), iItemAction(EGenerationItemActionAdd), iPlaceholder(EFalse), iUri(NULL){} + inline TThumbnailGenerationItem(): iItemId( KErrNotFound ), iItemType(EGenerationItemTypeUnknown), + iItemAction(EGenerationItemActionAdd), iPlaceholder(EFalse), iUri(NULL){} inline ~TThumbnailGenerationItem(){delete iUri; iUri = NULL;} TItemId iItemId; @@ -166,7 +167,9 @@ * @param aIDArray IDs for thumbnail creation * @param aForce pass ETrue if processor is forced to run without waiting harvesting complete */ - void AddToQueueL( TObserverNotificationType aType, TThumbnailGenerationItemType aItemType, const RArray& aIDArray, const RPointerArray& aObjectUriArray, TBool aPresent ); + void AddToQueueL( TObserverNotificationType aType, TThumbnailGenerationItemType aItemType, + const RArray& aIDArray, const RPointerArray& aObjectUriArray, + TBool aPresent ); /** * Calls Thumbnail Manager to create thumbnails diff -r b67379558a75 -r d429f823a6b7 imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp --- a/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp Tue Jul 06 14:37:18 2010 +0300 +++ b/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp Thu Jul 08 15:45:05 2010 +0300 @@ -1288,6 +1288,52 @@ QueryL( EGenerationItemActionResolveType ); } + else if ( iDeleteItemCount > 0 ) + { + TN_DEBUG1( "void CThumbAGProcessor::RunL() delete thumbnails"); + // delete thumbs by URI + __ASSERT_DEBUG((iTMSession), User::Panic(_L("CThumbAGProcessor::RunL() !iTMSession "), KErrBadHandle)); + if(iTMSession) + { + TInt itemIndex(KErrNotFound); + + for(TInt i=0;i= 0) + { + if(!iGenerationQueue[itemIndex].iUri) + { + //URI is invalid + TN_DEBUG1( "void CThumbAGProcessor::RunL() unable to delete URI inbalid"); + iGenerationQueue.Remove( itemIndex ); + ActivateAO(); + return; + } + + TN_DEBUG2( "void CThumbAGProcessor::RunL() delete %S", iGenerationQueue[itemIndex].iUri); + CThumbnailObjectSource* source = NULL; + TRAPD(err, source = CThumbnailObjectSource::NewL( *iGenerationQueue[itemIndex].iUri, KNullDesC)); + + if(err == KErrNone) + { + iTMSession->DeleteThumbnails( *source ); + } + delete source; + + delete iGenerationQueue[itemIndex].iUri; + iGenerationQueue[itemIndex].iUri = NULL; + iGenerationQueue.Remove( itemIndex ); + + iActiveCount++; + } + } + } // no items in query queue, start new // select queue to process, priority by type else if ( iModifyItemCount > 0 ) @@ -1313,54 +1359,6 @@ QueryL( EGenerationItemActionAdd ); } - else if ( iDeleteItemCount > 0 ) - { - TN_DEBUG1( "void CThumbAGProcessor::RunL() delete thumbnails"); - i2ndRound = EFalse; - iUnknown = EFalse; - // delete thumbs by URI - __ASSERT_DEBUG((iTMSession), User::Panic(_L("CThumbAGProcessor::RunL() !iTMSession "), KErrBadHandle)); - if(iTMSession) - { - TInt itemIndex(KErrNotFound); - - for(TInt i=0;i= 0) - { - if(!iGenerationQueue[itemIndex].iUri) - { - //URI is invalid - TN_DEBUG1( "void CThumbAGProcessor::RunL() unable to delete URI inbalid"); - iGenerationQueue.Remove( itemIndex ); - ActivateAO(); - return; - } - - TN_DEBUG2( "void CThumbAGProcessor::RunL() delete %S", iGenerationQueue[itemIndex].iUri); - CThumbnailObjectSource* source = NULL; - TRAPD(err, source = CThumbnailObjectSource::NewL( *iGenerationQueue[itemIndex].iUri, KNullDesC)); - - if(err == KErrNone) - { - iTMSession->DeleteThumbnails( *source ); - } - delete source; - - delete iGenerationQueue[itemIndex].iUri; - iGenerationQueue[itemIndex].iUri = NULL; - iGenerationQueue.Remove( itemIndex ); - - iActiveCount++; - } - } - } else if( i2ndAddItemCount > 0) { TN_DEBUG1( "void CThumbAGProcessor::RunL() update 2nd round thumbnails"); @@ -1687,8 +1685,9 @@ } //check if forced run needs to continue - if ( iModifyItemCount || iUnknownItemCount > 0 ) + if ( iModifyItemCount > 0 || iUnknownItemCount > 0 || iDeleteItemCount > 0 ) { + TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - iModifyItemCount > 0 || iUnknownItemCount > 0 || iDeleteItemCount > 0"); SetForceRun( ETrue ); } else diff -r b67379558a75 -r d429f823a6b7 imagehandlingutilities/thumbnailmanager/thumbnailmanagerqt/tsrc/test_qtnmwrapper.cpp --- a/imagehandlingutilities/thumbnailmanager/thumbnailmanagerqt/tsrc/test_qtnmwrapper.cpp Tue Jul 06 14:37:18 2010 +0300 +++ b/imagehandlingutilities/thumbnailmanager/thumbnailmanagerqt/tsrc/test_qtnmwrapper.cpp Thu Jul 08 15:45:05 2010 +0300 @@ -470,7 +470,25 @@ return QTest::qExec(&tc, c, v); } #else - QTEST_MAIN(TestThumbnailManager) + int main (int argc, char* argv[]) + { + for ( int i=0;i +#include NONSHARABLE_CLASS( CThumbnailFetchedChecker ): public CBase { @@ -25,8 +26,10 @@ static CThumbnailFetchedChecker* NewL(); virtual ~CThumbnailFetchedChecker(); public: - TInt LastFetchResult( const TDesC& aUri ); - void SetFetchResult( const TDesC& aUri, TInt aError ); + TInt LastFetchResult( const TDesC& aUri, const TThumbnailSize aThumbnailSize ); + void SetFetchResult( const TDesC& aUri, const TThumbnailSize aThumbnailSize, TInt aError ); + void DeleteFetchResult( const TDesC& aUri ); + void RenameFetchResultL( const TDesC& aNewUri, const TDesC& aOldUri ); void Reset(); private: CThumbnailFetchedChecker(); @@ -34,13 +37,15 @@ NONSHARABLE_CLASS( CEntry ) : public CBase { public: - static CEntry* NewL( const TDesC& aUri, TInt aError ); - static TInt FindCB( const TDesC* aUri, const CEntry& aEntry ); + static CEntry* NewL( const TDesC& aUri, const TThumbnailSize aThumbnailSize, TInt aError ); + static TInt FindCB( const CEntry& aEntry1, const CEntry& aEntry ); + static TInt FindCBUri( const TDesC* aUri, const CEntry& aEntry ); static TInt InsertCB( const CEntry& aEntry1, const CEntry& aEntry2 ); CEntry(); virtual ~CEntry(); public: HBufC* iUri; + TInt32 iSize; TInt iError; }; diff -r b67379558a75 -r d429f823a6b7 imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailstore.h --- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailstore.h Tue Jul 06 14:37:18 2010 +0300 +++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnailstore.h Thu Jul 08 15:45:05 2010 +0300 @@ -208,9 +208,10 @@ * @param aFs File server. * @param aDrive Drive the store used for * @param aCenter Pointer to cenrep data handler + * @param aReadOnly flag is store write protected * @return New CThumbnailStore instance. */ - static CThumbnailStore* NewL( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer ); + static CThumbnailStore* NewL( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer, const TBool aReadOnly ); /** * Destructor @@ -358,6 +359,11 @@ * @contains indication whether file modified */ TBool CheckModifiedByPathL( const TDesC& aPath, const TInt64 aModified, TBool& modifiedChanged); + + /** + * @return TBool is store write protected + */ + TBool IsReadOnly(); private: /** @@ -366,9 +372,10 @@ * @since S60 v5.0 * @param aFs File server. * @param aDrive Drive the store used for + * @param aReadOnly set flag if store is write protected * @return New CThumbnailStore instance. */ - CThumbnailStore( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer); + CThumbnailStore( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer, const TBool aReadOnly); /** * Symbian 2nd phase constructor can leave. @@ -648,6 +655,11 @@ * How long previous flush took ms */ TInt iPreviousFlushDelay; + + /** + * is store write protected + */ + TBool iReadOnly; }; // End of File diff -r b67379558a75 -r d429f823a6b7 imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailfetchedchecker.cpp --- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailfetchedchecker.cpp Tue Jul 06 14:37:18 2010 +0300 +++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailfetchedchecker.cpp Thu Jul 08 15:45:05 2010 +0300 @@ -16,6 +16,7 @@ */ #include "thumbnailfetchedchecker.h" +#include "thumbnaillog.h" const int KMaxStoredEntries = 100; @@ -49,13 +50,28 @@ // CThumbnailFetchedChecker::LastFetchResult() // ----------------------------------------------------------------------------- // -TInt CThumbnailFetchedChecker::LastFetchResult( const TDesC& aUri ) +TInt CThumbnailFetchedChecker::LastFetchResult( const TDesC& aUri, const TThumbnailSize aThumbnailSize ) { - TInt i = iNotFetched.FindInOrder( aUri, CEntry::FindCB ); - if ( i >= 0 && i < iNotFetched.Count() ) + TN_DEBUG3( "CThumbnailFetchedChecker::LastFetchResult(aUri=%S aThumbnailSize=%d)", &aUri, aThumbnailSize); + + CEntry* entry = NULL; + TRAPD( err, entry = CEntry::NewL( aUri, aThumbnailSize, KErrNone ) ); + if ( !err && entry ) { - return iNotFetched[ i ]->iError; + TInt ret = iNotFetched.FindInOrder( entry, CEntry::FindCB ); + if ( ret != KErrNotFound ) + { + TN_DEBUG1( "CThumbnailFetchedChecker::LastFetchResult() -> error found"); + entry = NULL; + delete entry; + + return iNotFetched[ ret ]->iError; + } } + + delete entry; + entry = NULL; + return KErrNone; } @@ -63,31 +79,43 @@ // CThumbnailFetchedChecker::SetFetchResult() // ----------------------------------------------------------------------------- // -void CThumbnailFetchedChecker::SetFetchResult( const TDesC& aUri, TInt aError ) +void CThumbnailFetchedChecker::SetFetchResult( const TDesC& aUri, const TThumbnailSize aThumbnailSize, TInt aError ) { + TN_DEBUG4( "CThumbnailFetchedChecker::SetFetchResult(aUri=%S aThumbnailSize=%d aError=%d)", &aUri, aThumbnailSize, aError); if ( aError == KErrNone ) { - // Do not store successful results - TInt i = iNotFetched.FindInOrder( aUri, CEntry::FindCB ); - if ( i >= 0 && i < iNotFetched.Count() ) + // Remove successful results from store + CEntry* entry = NULL; + TRAPD( err, entry = CEntry::NewL( aUri, aThumbnailSize, aError ) ); + if ( !err && entry ) { - delete iNotFetched[ i ]; - iNotFetched.Remove( i ); + TInt i = iNotFetched.FindInOrder( entry, CEntry::FindCB ); + if ( i >= 0 ) + { + TN_DEBUG2( "CThumbnailFetchedChecker::LastFetchResult() -> Remove successful results from store %d", iNotFetched.Count() ); + delete iNotFetched[ i ]; + iNotFetched.Remove( i ); + } } + entry = NULL; + delete entry; } else { + // Add or update CEntry* entry = NULL; - TRAPD( err, entry = CEntry::NewL( aUri, aError ) ); + TRAPD( err, entry = CEntry::NewL( aUri, aThumbnailSize, aError ) ); if ( !err && entry ) { err = iNotFetched.Find( entry ); if ( err != KErrNotFound ) { - TInt i = iNotFetched.FindInOrder( aUri, CEntry::FindCB ); - if ( i >= 0 && i < iNotFetched.Count() ) + // update existing fetch result + TInt i = iNotFetched.FindInOrder( entry, CEntry::FindCB ); + if ( i >= 0 ) { + TN_DEBUG1( "CThumbnailFetchedChecker::LastFetchResult() -> Update fetched tn error" ); iNotFetched[ i ]->iError = aError; } } @@ -95,9 +123,11 @@ { if( iNotFetched.Count() < KMaxStoredEntries ) { + // insert new fetch result TInt err = iNotFetched.InsertInOrder( entry, CEntry::InsertCB ); if ( err == KErrNone ) { + TN_DEBUG2( "CThumbnailFetchedChecker::LastFetchResult() -> Inserted new fetched tn error %d", iNotFetched.Count()); entry = NULL; // owned by array now } } @@ -110,25 +140,76 @@ } // ----------------------------------------------------------------------------- +// CThumbnailFetchedChecker::DeleteFetchResult() +// ----------------------------------------------------------------------------- +// +void CThumbnailFetchedChecker::DeleteFetchResult( const TDesC& aUri ) + { + TN_DEBUG2( "CThumbnailFetchedChecker::DeleteFetchResult(%S)", &aUri); + // delete all entries of passed uri + TInt ret; + do + { + ret = iNotFetched.FindInOrder( aUri, CEntry::FindCBUri ); + if ( ret >= 0 ) + { + TN_DEBUG1( "CThumbnailFetchedChecker::DeleteFetchResult() -> Deteled URI from fetched list" ); + delete iNotFetched[ ret ]; + iNotFetched.Remove( ret ); + } + } + while(ret != KErrNotFound ); + + } + +// ----------------------------------------------------------------------------- +// CThumbnailFetchedChecker::LastFetchResult() +// ----------------------------------------------------------------------------- +// +void CThumbnailFetchedChecker::RenameFetchResultL( const TDesC& aNewUri, const TDesC& aOldUri ) + { + TN_DEBUG3( "CThumbnailFetchedChecker::RenameFetchResult(aNewUri=%S aOldUri=%S)", &aNewUri, &aOldUri); + // change every occurence of passed uri + TInt ret; + do + { + ret = iNotFetched.FindInOrder( aOldUri, CEntry::FindCBUri ); + if ( ret >= 0 ) + { + delete iNotFetched[ ret ]->iUri; + iNotFetched[ ret ]->iUri = NULL; + + iNotFetched[ ret ]->iUri = aNewUri.AllocL(); + TN_DEBUG1( "CThumbnailFetchedChecker::RenameeFetchResult() -> Renamed URI in fetched list" ); + } + } + while(ret != KErrNotFound ); + + } + +// ----------------------------------------------------------------------------- // CThumbnailFetchedChecker::Reset() // ----------------------------------------------------------------------------- // void CThumbnailFetchedChecker::Reset() { + TN_DEBUG1( "CThumbnailFetchedChecker::Reset()"); iNotFetched.ResetAndDestroy(); } // ----------------------------------------------------------------------------- -// CThumbnailFetchedChecker::CEntry::New() +// CThumbnailFetchedChecker::CEntry::NewL() // ----------------------------------------------------------------------------- // CThumbnailFetchedChecker::CEntry* CThumbnailFetchedChecker::CEntry::NewL( - const TDesC& aUri, TInt aError ) + const TDesC& aUri, const TThumbnailSize aThumbnailSize, TInt aError ) { + TN_DEBUG4( "CThumbnailFetchedChecker::CEntry::NewL(aUri=%S aThumbnailSize=%d aError=%d)", &aUri, aThumbnailSize, aError); CEntry* self = new (ELeave) CEntry(); if ( self ) { - self->iUri = aUri.Alloc(); + self->iUri = aUri.AllocL(); + self->iSize = aThumbnailSize; self->iError = aError; if ( !self->iUri ) { @@ -144,8 +225,28 @@ // ----------------------------------------------------------------------------- // TInt CThumbnailFetchedChecker::CEntry::FindCB( - const TDesC* aUri, const CThumbnailFetchedChecker::CEntry& aEntry ) + const CThumbnailFetchedChecker::CEntry& aEntry, const CThumbnailFetchedChecker::CEntry& aEntry1 ) { + TN_DEBUG1( "CThumbnailFetchedChecker::CEntry::FindCB"); + if( aEntry1.iSize == aEntry.iSize) + { + // return index if size and uri matches + return aEntry.iUri->CompareF( *( aEntry1.iUri ) ); + } + else + { + return KErrNotFound; + } + } + +// ----------------------------------------------------------------------------- +// CThumbnailFetchedChecker::CEntry::FindCBUri() +// ----------------------------------------------------------------------------- +// +TInt CThumbnailFetchedChecker::CEntry::FindCBUri( + const TDesC* aUri, const CThumbnailFetchedChecker::CEntry& aEntry ) + { + TN_DEBUG2( "CThumbnailFetchedChecker::CEntry::FindCBUri(aUri=%S", &aUri); return aUri->CompareF( *( aEntry.iUri ) ); } @@ -157,7 +258,16 @@ const CThumbnailFetchedChecker::CEntry& aEntry1, const CThumbnailFetchedChecker::CEntry& aEntry2 ) { - return aEntry1.iUri->CompareF( *( aEntry2.iUri ) ); + TN_DEBUG1( "CThumbnailFetchedChecker::CEntry::InsertCB"); + if( aEntry1.iSize == aEntry2.iSize) + { + // return index if size and uri matches + return aEntry1.iUri->CompareF( *( aEntry2.iUri ) ); + } + else + { + return KErrNotFound; + } } // ----------------------------------------------------------------------------- diff -r b67379558a75 -r d429f823a6b7 imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailgeneratetask.cpp --- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailgeneratetask.cpp Tue Jul 06 14:37:18 2010 +0300 +++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailgeneratetask.cpp Thu Jul 08 15:45:05 2010 +0300 @@ -494,14 +494,14 @@ iServer.StoreForPathL( iFilename )->StoreThumbnailL( iFilename, tempBitmap, aOriginalSize, EFalse, iThumbnailSize, iModified, !iVirtualUri, ETrue ); //remove result from fetched checker - iServer.FetchedChecker().SetFetchResult( iFilename, KErrNone ); + iServer.FetchedChecker().SetFetchResult( iFilename, iThumbnailSize, KErrNone ); } else if(iTargetUri != KNullDesC) { iServer.StoreForPathL( iTargetUri )->StoreThumbnailL( iTargetUri, tempBitmap, aOriginalSize, EFalse, iThumbnailSize, iModified, !iVirtualUri, ETrue ); //remove result from fetched checker - iServer.FetchedChecker().SetFetchResult( iTargetUri, KErrNone ); + iServer.FetchedChecker().SetFetchResult( iTargetUri, iThumbnailSize, KErrNone ); } CleanupStack::PopAndDestroy( tempBitmap ); diff -r b67379558a75 -r d429f823a6b7 imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailserver.cpp --- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailserver.cpp Tue Jul 06 14:37:18 2010 +0300 +++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailserver.cpp Thu Jul 08 15:45:05 2010 +0300 @@ -570,7 +570,7 @@ if( iFetchedChecker ) { - iFetchedChecker->SetFetchResult( aPath, KErrNone ); + iFetchedChecker->SetFetchResult( aPath, aThumbnailSize, KErrNone ); } } @@ -585,7 +585,7 @@ TN_DEBUG3( "CThumbnailServer::FetchThumbnailL(aPath=%S aThumbnailSize=%d)", &aPath, aThumbnailSize ); if( iFetchedChecker ) { - TInt err( iFetchedChecker->LastFetchResult( aPath ) ); + TInt err( iFetchedChecker->LastFetchResult( aPath, aThumbnailSize ) ); if ( err == KErrNone ) // To avoid useless sql gets that fails for sure { // custom sizes are not stored to db, skip fetching @@ -597,7 +597,7 @@ TRAP( err, StoreForPathL( aPath )->FetchThumbnailL( aPath, aThumbnail, aData, aThumbnailSize, aOriginalSize) ); if ( err != KErrNone ) { - iFetchedChecker->SetFetchResult( aPath, err ); + iFetchedChecker->SetFetchResult( aPath, aThumbnailSize, err ); } } User::LeaveIfError( err ); @@ -666,7 +666,7 @@ if( iFetchedChecker ) { - iFetchedChecker->SetFetchResult( aPath, KErrNone ); + iFetchedChecker->DeleteFetchResult( aPath ); } } @@ -944,7 +944,7 @@ } else { - if(iFormatting) + if( iFormatting ) { TN_DEBUG1( "CThumbnailServer::StoreForDriveL() - FORMATTING! - ABORT"); User::Leave( KErrNotSupported ); @@ -953,17 +953,31 @@ TVolumeInfo volumeInfo; TInt err = iFs.Volume( volumeInfo, aDrive ); - if ( err || volumeInfo.iDrive.iDriveAtt& KDriveAttRom || - volumeInfo.iDrive.iDriveAtt& KDriveAttRemote || - volumeInfo.iDrive.iMediaAtt& KMediaAttWriteProtected || - volumeInfo.iDrive.iMediaAtt& KMediaAttLocked ) + if ( err ) + { + // Locked + TN_DEBUG2( "CThumbnailServer::StoreForDriveL() - err %d", err); + User::Leave( err); + } + else if( volumeInfo.iDrive.iMediaAtt& KMediaAttLocked ) { - // We don't support ROM disks or remote mounts. Media - // must be read-write and not locked. - User::Leave( KErrAccessDenied); + TN_DEBUG1( "CThumbnailServer::StoreForDriveL() - locked"); + User::Leave( KErrAccessDenied ); } - - res = CThumbnailStore::NewL( iFs, aDrive, iImei, this ); + else if ( volumeInfo.iDrive.iDriveAtt& KDriveAttRom || + volumeInfo.iDrive.iDriveAtt& KDriveAttRemote || + volumeInfo.iDrive.iMediaAtt& KMediaAttWriteProtected ) + { + // We support ROM disks and remote disks in read only mode. + TN_DEBUG1( "CThumbnailServer::StoreForDriveL() - rom/remote/write protected"); + res = CThumbnailStore::NewL( iFs, aDrive, iImei, this, ETrue ); + } + else + { + TN_DEBUG1( "CThumbnailServer::StoreForDriveL() - normal"); + res = CThumbnailStore::NewL( iFs, aDrive, iImei, this, EFalse ); + } + CleanupStack::PushL( res ); iStores.InsertL( aDrive, res ); res->SetPersistentSizes(iPersistentSizes); @@ -1295,7 +1309,7 @@ if( iFetchedChecker ) { - iFetchedChecker->SetFetchResult( aPath, KErrNone ); + iFetchedChecker->DeleteFetchResult( aPath ); } // need to create new thumbs @@ -1327,8 +1341,7 @@ if( iFetchedChecker ) { - iFetchedChecker->SetFetchResult( aNewPath, iFetchedChecker->LastFetchResult(aCurrentPath) ); - iFetchedChecker->SetFetchResult( aCurrentPath, KErrNone ); + iFetchedChecker->RenameFetchResultL( aNewPath, aCurrentPath ); } } diff -r b67379558a75 -r d429f823a6b7 imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailstore.cpp --- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailstore.cpp Tue Jul 06 14:37:18 2010 +0300 +++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailstore.cpp Thu Jul 08 15:45:05 2010 +0300 @@ -166,9 +166,9 @@ // Two-phased constructor. // --------------------------------------------------------------------------- // -CThumbnailStore* CThumbnailStore::NewL( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer ) +CThumbnailStore* CThumbnailStore::NewL( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer, const TBool aReadOnly ) { - CThumbnailStore* self = new( ELeave )CThumbnailStore( aFs, aDrive, aImei, aServer ); + CThumbnailStore* self = new( ELeave )CThumbnailStore( aFs, aDrive, aImei, aServer, aReadOnly ); CleanupStack::PushL( self ); self->ConstructL(); CleanupStack::Pop( self ); @@ -222,9 +222,9 @@ // C++ default constructor can NOT contain any code, that might leave. // --------------------------------------------------------------------------- // -CThumbnailStore::CThumbnailStore( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer ): - iFs( aFs ), iDrive( aDrive ), iDriveChar( 0 ), iBatchItemCount(0), iImei(aImei), - iServer(aServer), iDiskFull(EFalse), iUnrecoverable(ETrue), iBatchFlushItemCount(KMInBatchItems) +CThumbnailStore::CThumbnailStore( RFs& aFs, TInt aDrive, TDesC& aImei, CThumbnailServer* aServer, const TBool aReadOnly ): + iFs( aFs ), iDrive( aDrive ), iDriveChar( 0 ), iBatchItemCount(0), iImei(aImei), iServer(aServer), iDiskFullNotifier(NULL), + iDiskFull(EFalse), iActivityManager(NULL), iUnrecoverable(ETrue), iBatchFlushItemCount(KMInBatchItems), iReadOnly(aReadOnly) { // no implementation required } @@ -241,31 +241,39 @@ #ifdef _DEBUG iThumbCounter = 0; #endif - - HBufC* databasePath = HBufC::NewLC( KMaxFileName ); - TPtr pathPtr = databasePath->Des(); - User::LeaveIfError( RFs::DriveToChar( iDrive, iDriveChar )); - pathPtr.Append( iDriveChar ); - pathPtr.Append( KThumbnailDatabaseName ); - - //start disk space monitor - iDiskFullNotifier = CThumbnailStoreDiskSpaceNotifierAO::NewL( *this, - KDiskFullThreshold, - pathPtr ); + if(!iReadOnly) + { + HBufC* databasePath = HBufC::NewLC( KMaxFileName ); + TPtr pathPtr = databasePath->Des(); + User::LeaveIfError( RFs::DriveToChar( iDrive, iDriveChar )); + pathPtr.Append( iDriveChar ); + pathPtr.Append( KThumbnailDatabaseName ); + + //start disk space monitor + iDiskFullNotifier = CThumbnailStoreDiskSpaceNotifierAO::NewL( *this, + KDiskFullThreshold, + pathPtr ); - CleanupStack::PopAndDestroy( databasePath ); + CleanupStack::PopAndDestroy( databasePath ); + + TN_DEBUG2( "CThumbnailStore::ConstructL() drive: %d", iDrive ); - TN_DEBUG2( "CThumbnailStore::ConstructL() drive: %d", iDrive ); + OpenDatabaseL(); - OpenDatabaseL(); + // to monitor device activity + iActivityManager = CTMActivityManager::NewL( this, KStoreMaintenanceIdle); + iActivityManager->Start(); - // to monitor device activity - iActivityManager = CTMActivityManager::NewL( this, KStoreMaintenanceIdle); - iActivityManager->Start(); - - iDeleteThumbs = ETrue; - iCheckFilesExist = ETrue; - iLastCheckedRowID = -1; + iDeleteThumbs = ETrue; + iCheckFilesExist = ETrue; + } + else + { + TN_DEBUG1( "CThumbnailStore::ConstructL() - read only, dymmy mode..." ); + iDeleteThumbs = EFalse; + iCheckFilesExist = EFalse; + iLastCheckedRowID = -1; + } } // --------------------------------------------------------------------------- @@ -1121,6 +1129,12 @@ const TThumbnailSize& aThumbnailSize, const TInt64 aModified, const TBool aThumbFromPath ) { TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( private ) in" ); + + if(iReadOnly) + { + TN_DEBUG1( "CThumbnailStore::StoreThumbnailL() read only, skip..." ); + return; + } #ifdef _DEBUG TTime aStart, aStop; @@ -1272,6 +1286,12 @@ { TSize thumbSize = aThumbnail->SizeInPixels(); TN_DEBUG4( "CThumbnailStore::StoreThumbnailL( public ) aThumbnailSize = %d, aThumbnailSize(%d,%d) IN", aThumbnailSize, thumbSize.iWidth, thumbSize.iHeight ); + + if(iReadOnly) + { + TN_DEBUG1( "CThumbnailStore::StoreThumbnailL() read only, skip..." ); + return; + } __ASSERT_DEBUG(( aThumbnail ), ThumbnailPanic( EThumbnailNullPointer )); @@ -1319,17 +1339,20 @@ CleanupStack::PushL( data ); CImageEncoder* encoder = NULL; - TRAPD( decErr, encoder = CExtJpegEncoder::DataNewL( CExtJpegEncoder::EHwImplementation, data, CImageEncoder::EOptionAlwaysThread ) ); + + CImageEncoder::TOptions options = ( CImageEncoder::TOptions )( CImageEncoder::EOptionAlwaysThread ); + + TRAPD( decErr, encoder = CExtJpegEncoder::DataNewL( CExtJpegEncoder::EHwImplementation, data, options ) ); if ( decErr != KErrNone ) { TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( public ) - HW CExtJpegEncoder failed %d", decErr); - TRAPD( decErr, encoder = CExtJpegEncoder::DataNewL( CExtJpegEncoder::ESwImplementation, data, CImageEncoder::EOptionAlwaysThread ) ); + TRAPD( decErr, encoder = CExtJpegEncoder::DataNewL( CExtJpegEncoder::ESwImplementation, data, options ) ); if ( decErr != KErrNone ) { TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( public ) - SW CExtJpegEncoder failed %d", decErr); - TRAPD( decErr, encoder = CImageEncoder::DataNewL( data, KJpegMime(), CImageEncoder::EOptionAlwaysThread ) ); + TRAPD( decErr, encoder = CImageEncoder::DataNewL( data, KJpegMime(), options ) ); if ( decErr != KErrNone ) { TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( public ) - CImageEncoder failed %d", decErr); @@ -1362,7 +1385,7 @@ // Set some format specific data imageData->iSampleScheme = TJpegImageData::EColor444; - imageData->iQualityFactor = 75; + imageData->iQualityFactor = 80; // imageData - ownership passed to frameImageData after AppendImageData User::LeaveIfError(frameImageData->AppendImageData(imageData)); @@ -1432,6 +1455,12 @@ TBool CThumbnailStore::FindDuplicateL( const TDesC& aPath, const TThumbnailSize& aThumbnailSize ) { TN_DEBUG1( "CThumbnailStore::FindDuplicateL()" ); + + if(iReadOnly) + { + TN_DEBUG1( "CThumbnailStore::FindDuplicateL() read only, skip..." ); + return EFalse; + } User::LeaveIfError( CheckDbState() ); @@ -1528,6 +1557,12 @@ { TN_DEBUG2( "CThumbnailStore::GetMissingSizesL() aSourceType == %d", aSourceType ); + if(iReadOnly) + { + TN_DEBUG1( "CThumbnailStore::GetMissingSizesL() read only, skip..." ); + return; + } + User::LeaveIfError( CheckDbState() ); HBufC* path = aPath.AllocLC(); @@ -1637,6 +1672,12 @@ { TN_DEBUG3( "CThumbnailStore::FetchThumbnailL(%S) aThumbnailSize==%d", &aPath, aThumbnailSize ); + if(iReadOnly) + { + TN_DEBUG1( "CThumbnailStore::FetchThumbnailL() read only, skip..." ); + User::Leave( KErrNotFound ); + } + User::LeaveIfError( CheckDbState() ); HBufC* path = aPath.AllocLC(); @@ -1761,6 +1802,12 @@ { TN_DEBUG2( "CThumbnailStore::DeleteThumbnailsL(%S)", &aPath ); + if(iReadOnly) + { + TN_DEBUG1( "CThumbnailStore::DeleteThumbnailsL() read only, skip..." ); + return; + } + #ifdef _DEBUG TTime aStart, aStop; aStart.UniversalTime(); @@ -1960,6 +2007,12 @@ { TN_DEBUG2( "CThumbnailStore::RenameThumbnailsL(%S)", &aCurrentPath ); + if(iReadOnly) + { + TN_DEBUG1( "CThumbnailStore::RenameThumbnailsL() read only, skip..." ); + return; + } + #ifdef _DEBUG TTime aStart, aStop; aStart.UniversalTime(); @@ -2049,6 +2102,12 @@ StopAutoFlush(); + if(iReadOnly) + { + TN_DEBUG1( "CThumbnailStore::FlushCacheTable() read only, skip..." ); + return; + } + if(iBatchItemCount <= 0 || CheckDbState() != KErrNone) { // cache empty or db unusable @@ -2190,6 +2249,12 @@ { TN_DEBUG1( "CThumbnailStore::StartAutoFlush()" ); + if(iReadOnly) + { + TN_DEBUG1( "CThumbnailStore::StartAutoFlush() read only, skip..." ); + return; + } + TInt err = KErrNone; if( iAutoFlushTimer ) @@ -2371,6 +2436,13 @@ { TN_DEBUG2( "CThumbnailStore::CheckModifiedByPathL() %S", &aPath); + if(iReadOnly) + { + TN_DEBUG1( "CThumbnailStore::CheckModifiedByPathL() read only, skip..." ); + modifiedChanged = EFalse; + return ETrue; + } + User::LeaveIfError( CheckDbState() ); HBufC* path = aPath.AllocLC(); @@ -2450,6 +2522,16 @@ return ret; } + +// ----------------------------------------------------------------------------- +// IsReadOnly() +// ----------------------------------------------------------------------------- +// +TBool CThumbnailStore::IsReadOnly() + { + return iReadOnly; + } + // ----------------------------------------------------------------------------- // PrepareBlacklistedItemsForRetryL() // ----------------------------------------------------------------------------- @@ -2480,6 +2562,12 @@ TInt CThumbnailStore::DeleteMarkedL() { TN_DEBUG1( "CThumbnailStore::DeleteMarkedL()" ); + + if(iReadOnly) + { + TN_DEBUG1( "CThumbnailStore::DeleteMarkedL() read only, skip..." ); + return KErrAccessDenied; + } #ifdef _DEBUG TTime aStart, aStop; @@ -2571,6 +2659,12 @@ TInt CThumbnailStore::FileExistenceCheckL() { TN_DEBUG1( "CThumbnailStore::FileExistenceCheckL()" ); + + if(iReadOnly) + { + TN_DEBUG1( "CThumbnailStore::FileExistenceCheckL() read only, skip..." ); + return ETrue; + } #ifdef _DEBUG TTime aStart, aStop; @@ -2693,7 +2787,7 @@ // TInt CThumbnailStore::CheckDbState() { - if (iUnrecoverable) + if (iUnrecoverable && !iReadOnly) { TN_DEBUG1( "CThumbnailStore::CheckDbState() - database in unrecoverable state" ); __ASSERT_DEBUG( !iUnrecoverable, ThumbnailPanic( EThumbnailDatabaseUnrecoverable )); @@ -2723,6 +2817,11 @@ TBool CThumbnailStore::IsDiskFull() { + if(iReadOnly) + { + TN_DEBUG1( "CThumbnailStore::IsDiskFull() read only, skip..." ); + return EFalse; + } return iDiskFull; } @@ -2734,6 +2833,12 @@ { TN_DEBUG2( "CThumbnailStore::ActivityChanged() aActive == %d", aActive); + if( iReadOnly ) + { + TN_DEBUG1( "CThumbnailStore::ActivityChanged() read only, skip..." ); + return; + } + if( aActive ) { iIdle = EFalse;