diff -r b790c5b3d11f -r a67f74060682 imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp --- a/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp Fri May 14 16:10:12 2010 +0300 +++ b/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp Thu May 27 13:11:20 2010 +0300 @@ -66,6 +66,8 @@ TN_DEBUG1( "CThumbAGProcessor::ConstructL() - begin" ); iTMSession = CThumbnailManager::NewL( *this ); + iTMSession->SetRequestObserver(*this); + iQueryAllItems = NULL; iQueryPlaceholders = NULL; iQuery = NULL; @@ -116,11 +118,13 @@ { TN_DEBUG1( "CThumbAGProcessor::~CThumbAGProcessor() - begin" ); - if(iForegroundGenerationObserver) - { - delete iForegroundGenerationObserver; - iForegroundGenerationObserver = NULL; - } + Cancel(); + + if(iPeriodicTimer) + { + iPeriodicTimer->Cancel(); + delete iPeriodicTimer; + } if(iActivityManager) { @@ -128,19 +132,27 @@ iActivityManager = NULL; } - if (iInactivityTimer) + if (iQuery) { - iInactivityTimer->Cancel(); - delete iInactivityTimer; - iInactivityTimer = NULL; + iQuery->Cancel(); + delete iQuery; + iQuery = NULL; } - if(iPeriodicTimer) + if(iQueryPlaceholders) { - iPeriodicTimer->Cancel(); - delete iPeriodicTimer; + iQueryPlaceholders->Cancel(); + delete iQueryPlaceholders; + iQueryPlaceholders = NULL; } + if (iQueryAllItems) + { + iQueryAllItems->Cancel(); + delete iQueryAllItems; + iQueryAllItems = NULL; + } + if (!iInit) { #ifdef MDS_MODIFY_OBSERVER @@ -149,35 +161,18 @@ #endif } + if(iForegroundGenerationObserver) + { + delete iForegroundGenerationObserver; + iForegroundGenerationObserver = NULL; + } + if ( iCollectionUtility ) { iCollectionUtility->Close(); iCollectionUtility = NULL; } - Cancel(); - - if(iQueryPlaceholders) - { - iQueryPlaceholders->Cancel(); - delete iQueryPlaceholders; - iQueryPlaceholders = NULL; - } - - if (iQuery) - { - iQuery->Cancel(); - delete iQuery; - iQuery = NULL; - } - - if (iQueryAllItems) - { - iQueryAllItems->Cancel(); - delete iQueryAllItems; - iQueryAllItems = NULL; - } - iAddQueue.Close(); iModifyQueue.Close(); iRemoveQueue.ResetAndDestroy(); @@ -188,6 +183,7 @@ if (iTMSession) { + iTMSession->RemoveRequestObserver(); delete iTMSession; iTMSession = NULL; } @@ -435,6 +431,29 @@ TN_DEBUG1( "CThumbAGProcessor::ThumbnailReady() - end" ); } +// ----------------------------------------------------------------------------- +// CThumbAGProcessor::ThumbnailRequestReady() +// ----------------------------------------------------------------------------- +// +void CThumbAGProcessor::ThumbnailRequestReady( TInt /*aError*/, TThumbnailRequestType aRequestType, + TThumbnailRequestId /*aId*/ ) + { + if (aRequestType == ERequestDeleteThumbnails) + { + TN_DEBUG1( "CThumbAGProcessor::ThumbnailRequestReady() - delete" ); + + iActiveCount--; + + if(iActiveCount <= 0) + { + iActiveCount = 0; + iActive = EFalse; + } + + ActivateAO(); + } + } + // --------------------------------------------------------------------------- // CThumbAGProcessor::SetMdESession() // --------------------------------------------------------------------------- @@ -665,7 +684,7 @@ } } - // 10.1 specific + // Symbian^4 specific if( imageObjectDef.Id() != aObject->Def().Id() ) { TN_DEBUG1( "CThumbAGProcessor::CreateThumbnailsL() 1st round not image"); @@ -935,6 +954,7 @@ } else { + iTMSession->SetRequestObserver(*this); iSessionDied = EFalse; } } @@ -1110,9 +1130,10 @@ iRemoveQueue.Remove( 0 ); delete source; delete uri; + + iActiveCount++; + iActive = ETrue; } - - ActivateAO(); } else if( i2ndRoundGenerateQueue.Count() > 0) { @@ -1133,7 +1154,7 @@ // void CThumbAGProcessor::DeleteAndCancelQuery(TBool aRestoreItems) { - TN_DEBUG1( "CThumbAGProcessor::DeleteAndCancelQuery() in" ); + TN_DEBUG2( "CThumbAGProcessor::DeleteAndCancelQuery(aRestoreItems = %d) in", aRestoreItems ); if(iQuery) { @@ -1728,7 +1749,8 @@ { iIdle = ETrue; - if(iAddQueue.Count() + iModifyQueue.Count() + iRemoveQueue.Count() + i2ndRoundGenerateQueue.Count() > 0 ) + if(iAddQueue.Count() + iModifyQueue.Count() + iRemoveQueue.Count() + + iQueryQueue.Count() + i2ndRoundGenerateQueue.Count() > 0 ) { ActivateAO(); }