diff -r 2014ca87e772 -r 235a7fc86938 imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp --- a/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp Tue Jan 26 15:18:05 2010 +0200 +++ b/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp Tue Feb 02 00:23:15 2010 +0200 @@ -106,6 +106,7 @@ iCallbackThumbnail = new( ELeave )CThumbnailDataImpl(); iTimer = CPeriodic::NewL(CActive::EPriorityIdle); + iStartError = KErrNone; #ifdef _DEBUG iStartExecTime.UniversalTime(); @@ -203,7 +204,7 @@ // void CThumbnailRequestActive::RunL() { - TN_DEBUG1( "CThumbnaiRequestActive::RunL()" ); + TN_DEBUG2( "CThumbnaiRequestActive::RunL() - request ID: %d", iParams.iRequestId ); if ( iParams.iControlFlags == EThumbnailPreviewThumbnail ) { @@ -405,7 +406,15 @@ if( iError == KErrServerTerminated) { iSession.Close(); - iSession.Connect(); + TInt connErr = iSession.Connect(); + if (connErr != KErrNone) + { + TN_DEBUG2( "CThumbnaiRequestActive::HandleError() - session reconnect err %d", connErr ); + } + else + { + TN_DEBUG1( "CThumbnailRequestActive::HandleError() - session reconnected"); + } } iCallbackThumbnail->Set( NULL, iClientData ); @@ -415,7 +424,7 @@ iError = KErrNotFound; } - TN_DEBUG2( "CThumbnaiRequestActive::RunL() - iObserver.ThumbnailReady %d", iParams.iRequestId ); + TN_DEBUG2( "CThumbnaiRequestActive::HandleError() - iObserver.ThumbnailReady %d", iParams.iRequestId ); iObserver.ThumbnailReady( iError, *iCallbackThumbnail, iParams.iRequestId ); iError = KErrNone; @@ -710,6 +719,22 @@ } // --------------------------------------------------------------------------- +// CThumbnailRequestActive::StartError() +// Error handling function. +// --------------------------------------------------------------------------- +// +void CThumbnailRequestActive::StartError( const TInt aErr ) + { + TN_DEBUG1( "CThumbnailRequestActive::StartError"); + + iStartError = aErr; + iRequestActive = ETrue; + + iTimer->Start( KClientRequestStartErrorTimeout, KClientRequestStartErrorTimeout, + TCallBack(TimerCallBack, this)); + } + +// --------------------------------------------------------------------------- // CThumbnailRequestActive::TimerCallBack() // --------------------------------------------------------------------------- // @@ -720,7 +745,17 @@ CThumbnailRequestActive* self = static_cast( aAny ); self->Cancel(); - self->iError = KErrTimedOut; + self->iTimer->Cancel(); + + if (self->iStartError != KErrNone) + { + self->iError = self->iStartError; + } + else + { + self->iError = KErrTimedOut; + } + self->HandleError(); return KErrNone;