diff -r ffb2d5dd62e9 -r ad31f4183ddc imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp --- a/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp Tue May 11 16:30:11 2010 +0300 +++ b/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp Tue May 25 13:01:47 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,10 +684,20 @@ } } - // 9.2 specific - if( !(imageObjectDef.Id() == aObject->Def().Id() || videoObjectDef.Id() == aObject->Def().Id()) ) + /*CMdEProperty* inDefaultFolder = NULL; + TBool inDefaultFolderVal(ETrue); + TInt inDefaultFolderErr = aObject->Property( baseObjDef.GetPropertyDefL( MdeConstants::Object::KInDefaultFolder ), inDefaultFolder, 0 ); + + if(inDefaultFolder && inDefaultFolderErr >= 0 ) { - TN_DEBUG1( "CThumbAGProcessor::CreateThumbnailsL() 1st round and not image or video, skip"); + inDefaultFolderVal = inDefaultFolder->BoolValueL(); + }*/ + + // Symbian^3 specific + if( !(( imageObjectDef.Id() == aObject->Def().Id() || videoObjectDef.Id() == aObject->Def().Id()) + /*&& inDefaultFolderVal*/ ) ) + { + TN_DEBUG1( "CThumbAGProcessor::CreateThumbnailsL() 1st round; not image or video in default folder, skip"); ActivateAO(); return; } @@ -935,6 +964,7 @@ } else { + iTMSession->SetRequestObserver(*this); iSessionDied = EFalse; } } @@ -1110,9 +1140,10 @@ iRemoveQueue.Remove( 0 ); delete source; delete uri; + + iActiveCount++; + iActive = ETrue; } - - ActivateAO(); } else if( i2ndRoundGenerateQueue.Count() > 0) { @@ -1133,7 +1164,7 @@ // void CThumbAGProcessor::DeleteAndCancelQuery(TBool aRestoreItems) { - TN_DEBUG1( "CThumbAGProcessor::DeleteAndCancelQuery() in" ); + TN_DEBUG2( "CThumbAGProcessor::DeleteAndCancelQuery(aRestoreItems = %d) in", aRestoreItems ); if(iQuery) { @@ -1728,7 +1759,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(); }