imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoderv2.cpp
branchRCL_3
changeset 5 82749d516180
parent 0 2014ca87e772
child 9 2eb74cf6572e
--- a/imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoderv2.cpp	Tue Feb 02 00:23:15 2010 +0200
+++ b/imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoderv2.cpp	Fri Feb 19 23:07:36 2010 +0200
@@ -155,28 +155,34 @@
     iDecoder = NULL;
     
     CImageDecoder::TOptions options = ( CImageDecoder::TOptions )( 
-            CImageDecoder::EOptionNoDither | CImageDecoder::EPreferFastDecode );
+            CImageDecoder::EOptionNoDither | CImageDecoder::EPreferFastDecode | CImageDecoder::EOptionAlwaysThread );
 
     TRAPD( decErr, iDecoder = CExtJpegDecoder::DataNewL( 
             CExtJpegDecoder::EHwImplementation, iFs, *iBuffer, options ));
                     
     if ( decErr != KErrNone )
         {
+        TN_DEBUG2( "CThumbnailImageDecoderv2::CreateDecoderL() - HW CExtJpegDecoder failed = %d", decErr );
         TRAP( decErr, iDecoder = CExtJpegDecoder::DataNewL(
                 CExtJpegDecoder::ESwImplementation, iFs, *iBuffer, options ));
         
         if ( decErr != KErrNone )
             {
+            TN_DEBUG2( "CThumbnailImageDecoderv2::CreateDecoderL() - SW CExtJpegDecoder failed %d", decErr);
+            LeaveIfCorruptL( decErr );
+            
             TRAP( decErr, iDecoder = CImageDecoder::DataNewL( iFs, *iBuffer, KJpegMime(), options ) );
             
             if ( decErr != KErrNone )
-                {                        
+                {                  
+                TN_DEBUG2( "CThumbnailImageDecoderv2::CreateDecoderL() - CImageDecoder failed %d", decErr);
+                LeaveIfCorruptL( decErr );
+            
                 // don't force any mime type
                 TRAPD( decErr, iDecoder = CImageDecoder::DataNewL( iFs, *iBuffer, options ) );
                 if ( decErr != KErrNone )
                     {                    
-                    TN_DEBUG1( "CThumbnailImageDecoderv2::CreateDecoderL() - error" );
-                    
+                    TN_DEBUG2( "CThumbnailImageDecoderv2::CImageDecoder() - CImageDecoder no mime error %d", decErr  );
                     User::Leave( decErr );
                     }
                 }
@@ -196,4 +202,18 @@
     TN_DEBUG1( "CThumbnailImageDecoderv2::CreateDecoderL() end" );
     }
 
+// -----------------------------------------------------------------------------
+// CThumbnailImageDecoderv2::LeaveIfCorruptL()
+// Leave if image is corrupted
+// -----------------------------------------------------------------------------
+//
+void CThumbnailImageDecoderv2::LeaveIfCorruptL(const TInt aError )
+    {
+    //no sense to try other codecs if image is corrupted
+    if( aError == KErrCorrupt || aError == KErrUnderflow)
+        {
+        User::Leave( aError );
+        }
+    }
+
 //End of file