imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp
changeset 19 b790c5b3d11f
parent 17 ffa62e555b02
child 22 a67f74060682
--- a/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp	Mon May 03 12:48:51 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp	Fri May 14 16:10:12 2010 +0300
@@ -295,7 +295,7 @@
         delete iQueryAllItems;
         iQueryAllItems = NULL;
         }
-    else if(&aQuery == iQuery )
+    else if(&aQuery == iQuery ) 
         {
         TN_DEBUG1( "CThumbAGProcessor::HandleQueryCompleted - Query completed");
         
@@ -318,7 +318,7 @@
                 
                 TInt itemIndex(KErrNotFound);
                 
-                //search delta items
+                //search delta items which were queried, but not found
                  for(TInt queryItem =0; queryItem < iQueryQueue.Count();queryItem++)
                      {
                      TBool found(EFalse);
@@ -369,7 +369,8 @@
             }
         else
             {
-            DeleteAndCancelQuery();
+            //Delete and cancel query, do not return items back to original queue
+            DeleteAndCancelQuery( EFalse );
             TN_DEBUG1( "CThumbAGProcessor::HandleQueryCompleted() Query FAILED!"); 
             }
         }
@@ -664,6 +665,7 @@
                     }
                 }
             
+		   // 10.1 specific
            if( imageObjectDef.Id() != aObject->Def().Id()  )
                 {
                 TN_DEBUG1( "CThumbAGProcessor::CreateThumbnailsL() 1st round not image");
@@ -1030,7 +1032,8 @@
         //force is coming, but executing non-forced query complete-> cancel old
         else
             {
-            DeleteAndCancelQuery();
+			//cancel query and move items back to original processing queue
+            DeleteAndCancelQuery( ETrue );
 	        ActivateAO();
             return;  
             }
@@ -1048,9 +1051,11 @@
     //waiting for MDS query to complete
     else if( iQueryActive )
         {
+		//state mismatch
         if(iForceRun && !iModify)
             {
-            DeleteAndCancelQuery();
+			//cancel query and move items back to original processing queue
+            DeleteAndCancelQuery(ETrue);
             ActivateAO();
             }
         else  
@@ -1126,7 +1131,7 @@
 // CThumbAGProcessor::DeleteAndCancelQuery()
 // ---------------------------------------------------------------------------
 //
-void CThumbAGProcessor::DeleteAndCancelQuery()
+void CThumbAGProcessor::DeleteAndCancelQuery(TBool aRestoreItems)
     {
     TN_DEBUG1( "CThumbAGProcessor::DeleteAndCancelQuery() in" );
     
@@ -1145,7 +1150,7 @@
     //move remainig IDs in query queue back to original queue
     while(iQueryQueue.Count())
         {
-        if(iLastQueue)
+        if(aRestoreItems && iLastQueue)
             {
             if(iLastQueue->FindInOrder(iQueryQueue[0], Compare) == KErrNotFound)
                 {
@@ -1794,7 +1799,7 @@
     //cancel 2nd round generarion when there is items in 1st round queues
     if(itemsLeft && i2ndRound)
         {
-        DeleteAndCancelQuery();
+        DeleteAndCancelQuery(ETrue);
         i2ndRound = EFalse;
         }