diff -r 7403edfcf0fb -r dea39715fc05 imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp --- a/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp Mon Mar 15 12:41:55 2010 +0200 +++ b/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp Wed Mar 31 22:04:49 2010 +0300 @@ -86,7 +86,7 @@ TThumbnailRequestId aId, TInt aPriority, CThumbnailRequestQueue* aQueue ): CActive( aPriority ), iSession( aThumbnailSession ), iParamsPckg( iParams ), iObserver( aObserver ), iFs( aFs ), iBitmapHandle( 0 ), iRequestId( aId ), - iRequestQueue( aQueue ) + iRequestQueue( aQueue ), iCanceled( EFalse ) { CActiveScheduler::Add( this ); TN_DEBUG2( "CThumbnaiRequestActive::CThumbnailRequestActive() AO's priority = %d", Priority()); @@ -163,6 +163,7 @@ case EReqGetThumbnailHandleLater: { // open file handle + iFile.Close(); User::LeaveIfError( iFile.Open( iFs, iTargetUri, EFileShareReadersOrWriters ) ); TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iTargetUri ); @@ -219,9 +220,12 @@ iTimer->Cancel(); - if (iRequestType == EReqDeleteThumbnails) + if (iRequestType == EReqDeleteThumbnails || iCanceled) { - // no action for delete + iFile.Close(); + iMyFileHandle.Close(); + + // no action for delete or canceled request iRequestQueue->RequestComplete(this); #ifdef _DEBUG @@ -239,8 +243,8 @@ // We tried to get thumbnail using file path, but it was not found in // the database. We need to open the file now (on the client side) and - // use file handle. - + // use file handle. + iFile.Close(); TInt err = iFile.Open( iFs, iParams.iFileName, EFileShareReadersOrWriters ); TN_DEBUG2( "CThumbnaiRequestActive::RunL() - file handle open err = %d", err ); User::LeaveIfError( err ); @@ -273,6 +277,10 @@ iObserver.ThumbnailReady( iStatus.Int(), *iCallbackThumbnail, iParams.iRequestId ); ReleaseServerBitmap(); + + iFile.Close(); + iMyFileHandle.Close(); + iRequestQueue->RequestComplete(this); #ifdef _DEBUG @@ -296,6 +304,8 @@ ReleaseServerBitmap(); + iFile.Close(); + //set flags so that EThumbnailGeneratePersistentSizesOnly is done aka check all missing sizes iParams.iQualityPreference = CThumbnailManager::EOptimizeForQuality; iParams.iControlFlags = EThumbnailGeneratePersistentSizesOnly; @@ -350,12 +360,17 @@ if ( iProcessingPreview ) { TN_DEBUG2( "CThumbnailRequestActive::RunL() - iObserver.ThumbnailPreviewReady %d", iParams.iRequestId ); - //increase priority of 2nd round (both, AO and request itself) + + //increase priority of 2nd round (both, AO and request itself) this->SetPriority(this->Priority() + 1); iParams.iPriority++; iObserver.ThumbnailPreviewReady( *iCallbackThumbnail, iParams.iRequestId ); iProcessingPreview = EFalse; + ReleaseServerBitmap(); + + iFile.Close(); + Get2ndPhaseThumbnailL(); } else @@ -365,6 +380,9 @@ iObserver.ThumbnailReady( iStatus.Int(), * iCallbackThumbnail, iParams.iRequestId ); ReleaseServerBitmap(); + iFile.Close(); + iMyFileHandle.Close(); + iRequestQueue->RequestComplete(this); #ifdef _DEBUG @@ -417,6 +435,7 @@ __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId )); + iCanceled = ETrue; iSession.CancelRequest( iRequestId ); ReleaseServerBitmap(); } @@ -479,6 +498,9 @@ ReleaseServerBitmap(); + iFile.Close(); + iMyFileHandle.Close(); + iRequestCompleted = ETrue; iRequestQueue->RequestComplete(this); iRequestActive = EFalse;