imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailgeneratetask.cpp
changeset 15 7197e789b953
parent 14 2edacbf5d3f9
child 19 b790c5b3d11f
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailgeneratetask.cpp	Fri Mar 19 09:35:30 2010 +0200
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailgeneratetask.cpp	Fri Apr 16 15:16:16 2010 +0300
@@ -71,6 +71,7 @@
     
     // scaled bitmaps to pool by default
     iScaledBitmapToPool = ETrue;
+    iBitmapHandle = 0;
     }
 
 
@@ -94,10 +95,10 @@
         delete iMissingSizes;
         }
 		
-    if ( iBitmap )
+    if ( iBitmapHandle )
         {
-        iServer.DeleteBitmapFromPool( iBitmap->Handle());
-        iBitmap = NULL;
+        iServer.DeleteBitmapFromPool( iBitmapHandle );
+        iBitmapHandle = 0;
         }
 		
     iProvider = NULL;
@@ -174,6 +175,8 @@
     DoBlacklisting( providerErr, TSize(0,0) );
     
     User::LeaveIfError( providerErr );
+    
+    TN_DEBUG2( "CThumbnailGenerateTask(0x%08x)::StartL() end", this );
     }
 
 
@@ -317,8 +320,8 @@
     CleanupStack::PushL( aBitmap );
     iServer.AddBitmapToPoolL( iRequestId.iSession, aBitmap, iRequestId );
 
-    // Keep pointer so we can delete bitmap from pool
-    iBitmap = aBitmap;
+    // Keep handle so we can delete bitmap from pool
+    iBitmapHandle = aBitmap->Handle();
     CleanupStack::Pop( aBitmap );
 
     // compTask is the scale task which returns the bitmap to the client
@@ -353,8 +356,9 @@
                 }
             
             CThumbnailScaleTask* scaleTask = CThumbnailScaleTask::NewL( iProcessor, iServer, iFilename,
-                iBitmap, iOriginalSize, (*iMissingSizes)[ i ].iSize, (*iMissingSizes)[ i ].iCrop, iDisplayMode,
-                KMaxPriority, iTargetUri, (*iMissingSizes)[ i ].iType, iModified, iScaledBitmapToPool, iEXIF );
+                aBitmap, iOriginalSize, (*iMissingSizes)[ i ].iSize, (*iMissingSizes)[ i ].iCrop, iDisplayMode,
+                KMaxPriority, iTargetUri, (*iMissingSizes)[ i ].iType, iModified, iScaledBitmapToPool, iEXIF,
+                iRequestId);
             CleanupStack::PushL( scaleTask );
             
             TInt err1 = KErrNone;
@@ -388,7 +392,7 @@
             if( i == 0 )
                 {
                 // compTask is now responsible for completing the RMessage
-                scaleTask->SetMessageData( iRequestId, iMessage );
+                scaleTask->SetMessageData( iRequestId, iMessage, iClientThread );
                 ResetMessageData();
                 }
             }
@@ -401,17 +405,17 @@
                  iThumbnailSize == EVideoFullScreenThumbnailSize ||
                  iThumbnailSize == EAudioFullScreenThumbnailSize ||
                  iThumbnailSize == EImageFullScreenThumbnailSize )
-                      {
-                      TInt width = iSize.iWidth; 
-                      iSize.iWidth = iSize.iHeight;
-                      iSize.iHeight = width;
-                      }
+                {
+                TInt width = iSize.iWidth; 
+                iSize.iWidth = iSize.iHeight;
+                iSize.iHeight = width;
+                }
             }
         
         complTask = CThumbnailScaleTask::NewL( iProcessor, iServer, iFilename,
-            iBitmap, iOriginalSize, iSize, iFlags& CThumbnailManager
+            aBitmap, iOriginalSize, iSize, iFlags& CThumbnailManager
             ::ECropToAspectRatio, iDisplayMode, KMaxPriority, iTargetUri,
-            iThumbnailSize, iModified, iScaledBitmapToPool, iEXIF );
+            iThumbnailSize, iModified, iScaledBitmapToPool, iEXIF, iRequestId );
         CleanupStack::PushL( complTask );
         
         TInt err1 = KErrNone;
@@ -443,13 +447,14 @@
         
         // compTask is now responsible for completing the RMessage and
         // returning the bitmap to the client
-        complTask->SetMessageData( iRequestId, iMessage );
+        complTask->SetMessageData( iRequestId, iMessage, iClientThread );
         ResetMessageData();
         }
 
     // Scale tasks now reference the bitmap in the pool
-    iServer.DeleteBitmapFromPool( iBitmap->Handle());
-    iBitmap = NULL;
+    iServer.DeleteBitmapFromPool( iBitmapHandle );
+    iBitmapHandle = 0;
+    aBitmap = NULL;
     }
 
 // ---------------------------------------------------------------------------
@@ -511,7 +516,8 @@
             aError == KErrCorrupt ||
             aError == KErrCompletion ||
             aError == KErrUnderflow ||
-            aError == KErrNotReady)
+            aError == KErrNotReady || 
+            aError == KErrGeneral )
             {
         
         if(iMissingSizes)