--- a/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp Fri Apr 16 15:16:16 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp Mon May 03 12:48:51 2010 +0300
@@ -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 );
@@ -185,7 +186,12 @@
iSession.DeleteThumbnails( iParams.iThumbnailId, iParamsPckg, iStatus );
}
break;
- }
+ }
+ case EReqRenameThumbnails:
+ {
+ iSession.RenameThumbnails( iParamsPckg, iStatus );
+ break;
+ }
default:
{
break;
@@ -219,9 +225,15 @@
iTimer->Cancel();
- if (iRequestType == EReqDeleteThumbnails || iCanceled)
+ if (iRequestType == EReqDeleteThumbnails || iCanceled ||
+ iRequestType == EReqRenameThumbnails)
{
- // no action for delete or canceled request
+ TN_DEBUG1( "CThumbnailRequestActive::RunL() - rename/delete/canceled" );
+
+ iFile.Close();
+ iMyFileHandle.Close();
+
+ // no action for delete/rename or canceled request
iRequestQueue->RequestComplete(this);
#ifdef _DEBUG
@@ -239,8 +251,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 +285,10 @@
iObserver.ThumbnailReady( iStatus.Int(), *iCallbackThumbnail, iParams.iRequestId );
ReleaseServerBitmap();
+
+ iFile.Close();
+ iMyFileHandle.Close();
+
iRequestQueue->RequestComplete(this);
#ifdef _DEBUG
@@ -296,6 +312,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 +368,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 +388,9 @@
iObserver.ThumbnailReady( iStatus.Int(), * iCallbackThumbnail, iParams.iRequestId );
ReleaseServerBitmap();
+ iFile.Close();
+ iMyFileHandle.Close();
+
iRequestQueue->RequestComplete(this);
#ifdef _DEBUG
@@ -480,6 +506,9 @@
ReleaseServerBitmap();
+ iFile.Close();
+ iMyFileHandle.Close();
+
iRequestCompleted = ETrue;
iRequestQueue->RequestComplete(this);
iRequestActive = EFalse;
@@ -726,6 +755,22 @@
}
// ---------------------------------------------------------------------------
+// CThumbnailRequestActive::RenameThumbnails()
+// Rename thumbnails.
+// ---------------------------------------------------------------------------
+//
+void CThumbnailRequestActive::RenameThumbnails( const TDesC& aCurrentPath,
+ const TDesC& aNewPath, const TInt aPriority )
+ {
+ iRequestType = EReqRenameThumbnails;
+
+ iParams.iRequestId = iRequestId;
+ iParams.iPriority = aPriority;
+ iParams.iFileName = aCurrentPath;
+ iParams.iTargetUri = aNewPath;
+ }
+
+// ---------------------------------------------------------------------------
// Request 2nd phase thumbnail
// ---------------------------------------------------------------------------
//
@@ -798,8 +843,16 @@
CThumbnailRequestActive* self = static_cast<CThumbnailRequestActive*>( aAny );
+ self->iTimer->Cancel();
+
+ if (self->IsActive())
+ {
+ // hangs without this
+ TRequestStatus* statusPtr = &self->iStatus;
+ User::RequestComplete( statusPtr, KErrTimedOut );
+ }
+
self->Cancel();
- self->iTimer->Cancel();
if (self->iStartError != KErrNone)
{
@@ -812,6 +865,8 @@
self->HandleError();
+ TN_DEBUG1( "CThumbnailRequestActive::TimerCallBack() - end");
+
return KErrNone;
}