diff -r 2edacbf5d3f9 -r 7197e789b953 imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailgeneratetask.cpp --- 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)