imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp
--- a/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp Tue Apr 27 16:57:55 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp Tue May 11 16:30:11 2010 +0300
@@ -141,8 +141,27 @@
}
case EReqGetThumbnailPath:
{
- iSession.RequestThumbnailL( iPath, iTargetUri, iParams.iThumbnailId,
- iParamsPckg, iStatus );
+ // for custom size requests file handle can be opened here already, because
+ // custom thumbnails are never stored in db
+ if (iParams.iThumbnailSize == ECustomThumbnailSize &&
+ iParams.iOriginalControlFlags != EThumbnailGeneratePersistentSizesOnly)
+ {
+ TN_DEBUG1( "CThumbnaiRequestActive::StartL()- custom size request" );
+
+ iFile.Close();
+ User::LeaveIfError( iFile.Open( iFs, iPath, EFileShareReadersOrWriters ) );
+
+ TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iTargetUri );
+
+ CleanupClosePushL( iFile );
+ iSession.RequestThumbnailL( iFile, iPath, iParamsPckg, iStatus );
+ CleanupStack::PopAndDestroy( &iFile );
+ }
+ else
+ {
+ iSession.RequestThumbnailL( iPath, iTargetUri, iParams.iThumbnailId,
+ iParamsPckg, iStatus );
+ }
break;
}
case EReqSetThumbnailBuffer:
@@ -212,7 +231,7 @@
void CThumbnailRequestActive::RunL()
{
TN_DEBUG2( "CThumbnailRequestActive::RunL() - request ID: %d", iParams.iRequestId );
-
+
if ( iParams.iControlFlags == EThumbnailPreviewThumbnail )
{
iRequestCompleted = EFalse;
@@ -450,6 +469,24 @@
// ---------------------------------------------------------------------------
+// CThumbnailRequestActive::AsyncCancel()
+// ---------------------------------------------------------------------------
+//
+void CThumbnailRequestActive::AsyncCancel()
+ {
+ TN_DEBUG1( "CThumbnailRequestActive::AsyncCancel");
+
+ __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
+
+ iCanceled = ETrue;
+ iSession.CancelRequest( iRequestId );
+ ReleaseServerBitmap();
+
+ // AO stays active until request is complete or timeout is reached
+ }
+
+
+// ---------------------------------------------------------------------------
// CThumbnailRequestActive::ReleaseServerBitmap()
// Releases reserved bitmap.
// ---------------------------------------------------------------------------
@@ -619,6 +656,7 @@
iParams.iQualityPreference = aQualityPreference;
iParams.iThumbnailSize = aThumbnailSize;
iParams.iThumbnailId = aThumbnailId;
+ iParams.iFileName = aPath;
iPath = aPath;
iTargetUri = aTargetUri;
@@ -845,13 +883,6 @@
self->iTimer->Cancel();
- if (self->IsActive())
- {
- // hangs without this
- TRequestStatus* statusPtr = &self->iStatus;
- User::RequestComplete( statusPtr, KErrTimedOut );
- }
-
self->Cancel();
if (self->iStartError != KErrNone)