--- 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;