imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp
changeset 22 a67f74060682
parent 19 b790c5b3d11f
child 25 cb86b71cae0a
--- 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();
             }