imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp
changeset 30 b67379558a75
parent 29 4bdfb6b5c9b4
child 31 d429f823a6b7
child 36 c5df59b4ae2d
equal deleted inserted replaced
29:4bdfb6b5c9b4 30:b67379558a75
    81     iActiveCount = 0;
    81     iActiveCount = 0;
    82     
    82     
    83     // set auto create values from cenrep
    83     // set auto create values from cenrep
    84     CheckAutoCreateValuesL();
    84     CheckAutoCreateValuesL();
    85     
    85     
    86     iPeriodicTimer = CPeriodic::NewL(CActive::EPriorityIdle);
    86     iPeriodicTimer = CPeriodic::NewL(CActive::EPriorityStandard);
    87     
    87     
    88     iMountTimer = CPeriodic::NewL(CActive::EPriorityUserInput);
    88     iMountTimer = CPeriodic::NewL(CActive::EPriorityUserInput);
    89     
    89     
    90     SetForceRun( EFalse );    
    90     SetForceRun( EFalse );    
    91     
    91     
   606             {
   606             {
   607             TThumbnailGenerationItem item;
   607             TThumbnailGenerationItem item;
   608             item.iItemId = aIDArray[i];      
   608             item.iItemId = aIDArray[i];      
   609             item.iItemType = aItemType;
   609             item.iItemType = aItemType;
   610             
   610             
   611             SetGenerationItemType(item, aItemType);
   611             SetGenerationItemAction(item, aItemType);
   612             
   612             
   613             if(iPHHarvesting)
   613             if(iPHHarvesting)
   614                 {
   614                 {
   615                 item.iPlaceholder = ETrue;
   615                 item.iPlaceholder = ETrue;
   616                 }
   616                 }
   627             TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - PH  harvesting active, treat like add" );
   627             TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - PH  harvesting active, treat like add" );
   628             for (int i=0; i<aIDArray.Count(); i++)
   628             for (int i=0; i<aIDArray.Count(); i++)
   629                 {
   629                 {
   630                 TThumbnailGenerationItem item;
   630                 TThumbnailGenerationItem item;
   631                 item.iItemId = aIDArray[i];
   631                 item.iItemId = aIDArray[i];
       
   632                 item.iItemType = aItemType;
   632                 
   633                 
   633                 TInt itemIndex = iGenerationQueue.FindInOrder(item, Compare);
   634                 TInt itemIndex = iGenerationQueue.FindInOrder(item, Compare);
   634                                 
   635                                 
   635                 if (itemIndex >= 0)
   636                 if (itemIndex >= 0)
   636                     {
   637                     {
   640                 else
   641                 else
   641                     {
   642                     {
   642                     TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - append");
   643                     TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - append");
   643 
   644 
   644                      item.iPlaceholder = EFalse;
   645                      item.iPlaceholder = EFalse;
   645                      SetGenerationItemType( item, 0 );
   646                      SetGenerationItemAction( item, aItemType );
   646                      AppendProcessingQueue( item );
   647                      AppendProcessingQueue( item );
   647                     }
   648                     }
   648                 }
   649                 }
   649             }
   650             }
   650         else
   651         else
   655             
   656             
   656             for (int i=0; i<aIDArray.Count(); i++)
   657             for (int i=0; i<aIDArray.Count(); i++)
   657                 {
   658                 {
   658                 TThumbnailGenerationItem item;
   659                 TThumbnailGenerationItem item;
   659                 item.iItemId = aIDArray[i];
   660                 item.iItemId = aIDArray[i];
       
   661                 item.iItemType = aItemType;
   660                 
   662                 
   661                 itemIndex = iGenerationQueue.FindInOrder(item, Compare);
   663                 itemIndex = iGenerationQueue.FindInOrder(item, Compare);
   662                 
   664                 
   663                 if (itemIndex >= 0)
   665                 if (itemIndex >= 0)
   664                     {
   666                     {
   675                         }
   677                         }
   676                     }
   678                     }
   677                 else
   679                 else
   678                     {
   680                     {
   679                     TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - append");
   681                     TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - append");
   680                     SetGenerationItemType( item, 0 );
   682                     SetGenerationItemAction( item, aItemType);
   681                     item.iPlaceholder = EFalse;
   683                     item.iPlaceholder = EFalse;
   682                     AppendProcessingQueue( item );
   684                     AppendProcessingQueue( item );
   683                     }
   685                     }
   684                 }
   686                 }
   685             }
   687             }
   690             
   692             
   691             for (int i=0; i<aIDArray.Count(); i++)
   693             for (int i=0; i<aIDArray.Count(); i++)
   692                 {
   694                 {
   693                 TThumbnailGenerationItem item;
   695                 TThumbnailGenerationItem item;
   694                 item.iItemId = aIDArray[i];
   696                 item.iItemId = aIDArray[i];
       
   697                 item.iItemType = aItemType;
   695 
   698 
   696                 TInt itemIndex = iGenerationQueue.FindInOrder(item, Compare);
   699                 TInt itemIndex = iGenerationQueue.FindInOrder(item, Compare);
   697                 
   700                 
   698                 if(itemIndex >= 0)
   701                 if(itemIndex >= 0)
   699                     {
   702                     {
   996 // ---------------------------------------------------------------------------
   999 // ---------------------------------------------------------------------------
   997 // CThumbAGProcessor::QueryForPlaceholders()
  1000 // CThumbAGProcessor::QueryForPlaceholders()
   998 // ---------------------------------------------------------------------------
  1001 // ---------------------------------------------------------------------------
   999 //
  1002 //
  1000 
  1003 
  1001 void CThumbAGProcessor::QueryPlaceholdersL()
  1004 void CThumbAGProcessor::QueryPlaceholdersL(TBool aPresent)
  1002     {
  1005     {
  1003     TN_DEBUG1( "CThumbAGProcessor::QueryPlaceholdersL" );
  1006     TN_DEBUG1( "CThumbAGProcessor::QueryPlaceholdersL" );
  1004     
  1007     
  1005     __ASSERT_DEBUG((iMdESession), User::Panic(_L("CThumbAGProcessor::QueryPlaceholdersL() !iMdeSession "), KErrBadHandle));
  1008     __ASSERT_DEBUG((iMdESession), User::Panic(_L("CThumbAGProcessor::QueryPlaceholdersL() !iMdeSession "), KErrBadHandle));
  1006     __ASSERT_DEBUG((iDefNamespace), User::Panic(_L("CThumbAGProcessor::QueryPlaceholdersL() !iDefNamespace "), KErrBadHandle));
  1009     __ASSERT_DEBUG((iDefNamespace), User::Panic(_L("CThumbAGProcessor::QueryPlaceholdersL() !iDefNamespace "), KErrBadHandle));
  1038     CMdELogicCondition& rootCondition = iQueryPlaceholders->Conditions();
  1041     CMdELogicCondition& rootCondition = iQueryPlaceholders->Conditions();
  1039     rootCondition.SetOperator( ELogicConditionOperatorOr );
  1042     rootCondition.SetOperator( ELogicConditionOperatorOr );
  1040     
  1043     
  1041     CMdEObjectCondition& imagePHObjectCondition = rootCondition.AddObjectConditionL(imageObjDef);
  1044     CMdEObjectCondition& imagePHObjectCondition = rootCondition.AddObjectConditionL(imageObjDef);
  1042     imagePHObjectCondition.SetPlaceholderOnly( ETrue );
  1045     imagePHObjectCondition.SetPlaceholderOnly( ETrue );
  1043     imagePHObjectCondition.SetNotPresent( ETrue );
  1046     imagePHObjectCondition.SetNotPresent( aPresent );
  1044     
  1047     
  1045     CMdEObjectCondition& videoPHObjectCondition = rootCondition.AddObjectConditionL(videoObjDef);
  1048     CMdEObjectCondition& videoPHObjectCondition = rootCondition.AddObjectConditionL(videoObjDef);
  1046     videoPHObjectCondition.SetPlaceholderOnly( ETrue );
  1049     videoPHObjectCondition.SetPlaceholderOnly( ETrue );
  1047     videoPHObjectCondition.SetNotPresent( ETrue );
  1050     videoPHObjectCondition.SetNotPresent( aPresent );
  1048     
  1051     
  1049     CMdEObjectCondition& audioPHObjectCondition = rootCondition.AddObjectConditionL(audioObjDef);
  1052     CMdEObjectCondition& audioPHObjectCondition = rootCondition.AddObjectConditionL(audioObjDef);
  1050     audioPHObjectCondition.SetPlaceholderOnly( ETrue );
  1053     audioPHObjectCondition.SetPlaceholderOnly( ETrue );
  1051     audioPHObjectCondition.SetNotPresent( ETrue );
  1054     audioPHObjectCondition.SetNotPresent( aPresent );
  1052     
  1055     
  1053     iQueryPlaceholders->FindL(KMaxTInt, KMaxQueryBatchSize);   
  1056     iQueryPlaceholders->FindL(KMaxTInt, KMaxQueryBatchSize);   
  1054    
  1057    
  1055     TN_DEBUG1( "CThumbAGProcessor::QueryPlaceholdersL - end" );
  1058     TN_DEBUG1( "CThumbAGProcessor::QueryPlaceholdersL - end" );
  1056     }
  1059     }
  1085         iInit2 = ETrue;
  1088         iInit2 = ETrue;
  1086 
  1089 
  1087         iGenerationQueue.Reset();
  1090         iGenerationQueue.Reset();
  1088         iQueryQueue.Reset();
  1091         iQueryQueue.Reset();
  1089         
  1092         
  1090         TRAP_IGNORE(QueryPlaceholdersL());
  1093 		//query all not present placeholders
       
  1094         TRAP_IGNORE(QueryPlaceholdersL( ETrue ));
  1091 		//query all items after PH query
  1095 		//query all items after PH query
  1092         iDoQueryAllItems = ETrue;
  1096         iDoQueryAllItems = ETrue;
  1093         TN_DEBUG1( "CThumbAGProcessor::RunL() - Initialisation 1 done" );
  1097         TN_DEBUG1( "CThumbAGProcessor::RunL() - Initialisation 1 done" );
  1094         ActivateAO();
  1098         ActivateAO();
  1095         return;
  1099         return;
  1110         __ASSERT_DEBUG((err == KErrNone), User::Panic(_L("CThumbAGProcessor::RunL(), !iHarvesterClient "), err));
  1114         __ASSERT_DEBUG((err == KErrNone), User::Panic(_L("CThumbAGProcessor::RunL(), !iHarvesterClient "), err));
  1111         
  1115         
  1112         if(  err == KErrNone )
  1116         if(  err == KErrNone )
  1113             {
  1117             {
  1114             TN_DEBUG1( "CThumbAGProcessor::RunL() add iHarvesterClient observer");
  1118             TN_DEBUG1( "CThumbAGProcessor::RunL() add iHarvesterClient observer");
  1115             err = iHarvesterClient.AddHarvesterEventObserver( *this, EHEObserverTypeOverall | EHEObserverTypeMMC | EHEObserverTypePlaceholder, 10 );
  1119             err = iHarvesterClient.AddHarvesterEventObserver( *this, EHEObserverTypeOverall | EHEObserverTypeMMC | EHEObserverTypePlaceholder, 20 );
  1116             TN_DEBUG2( "CThumbAGProcessor::RunL() iHarvesterClient observer err = %d", err);
  1120             TN_DEBUG2( "CThumbAGProcessor::RunL() iHarvesterClient observer err = %d", err);
  1117             
  1121             
  1118             if( !err )
  1122             if( !err )
  1119                 {
  1123                 {
  1120                 TN_DEBUG1( "CThumbAGProcessor::RunL() add iHarvesterClient observer failed");
  1124                 TN_DEBUG1( "CThumbAGProcessor::RunL() add iHarvesterClient observer failed");
  1211     //Handle completed MDS Query
  1215     //Handle completed MDS Query
  1212     if( iQueryReady && iProcessingCount)
  1216     if( iQueryReady && iProcessingCount)
  1213         {
  1217         {
  1214         TInt err(KErrNone);
  1218         TInt err(KErrNone);
  1215         //if force or non forced
  1219         //if force or non forced
  1216         if((iForceRun && iModify ) || (!iForceRun && !iModify ))
  1220 		//if unknown items or mount timer is active, abort processing
       
  1221 
       
  1222         if(((iForceRun && iModify ) || (!iForceRun && !iModify )) && !iUnknownItemCount && !iMountTimer->IsActive())
  1217             {
  1223             {
  1218             TN_DEBUG1( "CThumbAGProcessor::RunL() - iQueryReady START" );
  1224             TN_DEBUG1( "CThumbAGProcessor::RunL() - iQueryReady START" );
  1219             
  1225             
  1220             const CMdEObject* object = &iQuery->Result( iProcessingCount-1 );
  1226             const CMdEObject* object = &iQuery->Result( iProcessingCount-1 );
  1221             iProcessingCount--;
  1227             iProcessingCount--;
  1237                 }
  1243                 }
  1238             }
  1244             }
  1239         //force is coming, but executing non-forced query complete-> cancel old
  1245         //force is coming, but executing non-forced query complete-> cancel old
  1240         else
  1246         else
  1241             {
  1247             {
  1242 			//cancel query and move items back to original processing queue
  1248 			//cancel query
       
  1249             TN_DEBUG1( "CThumbAGProcessor::RunL() - cancel processing query" );
  1243             DeleteAndCancelQuery( ETrue );
  1250             DeleteAndCancelQuery( ETrue );
  1244 	        ActivateAO();
  1251 	        ActivateAO();
  1245             return;  
  1252             return;  
  1246             }
  1253             }
  1247         
  1254         
  1481                 TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- MDS placeholder harvesterin started");
  1488                 TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- MDS placeholder harvesterin started");
  1482                 }
  1489                 }
  1483             else
  1490             else
  1484                 {
  1491                 {
  1485                 TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- MDS placeholder harvesting finished");
  1492                 TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- MDS placeholder harvesting finished");
  1486                 TRAP_IGNORE(QueryPlaceholdersL());
  1493                 //query present placeholders
       
  1494                 TRAP_IGNORE(QueryPlaceholdersL( EFalse ));
       
  1495                 iDoQueryAllItems = EFalse;
  1487                 iPHHarvestingItemsLeftTemp = 0;
  1496                 iPHHarvestingItemsLeftTemp = 0;
  1488                 }
  1497                 }
  1489             }
  1498             }
  1490         
  1499         
  1491         //restart mount timout if PH item count is increasing durin MMC harvesting 
  1500         //restart mount timout if PH item count is increasing durin MMC harvesting 
  1582                 UpdatePSValues(EFalse, ETrue);
  1591                 UpdatePSValues(EFalse, ETrue);
  1583                 iMMCHarvestingItemsLeftTemp = 0;
  1592                 iMMCHarvestingItemsLeftTemp = 0;
  1584                 }
  1593                 }
  1585             else
  1594             else
  1586                 {
  1595                 {
       
  1596 				//activate timeout if overall harvesting is not active
       
  1597                 if(!iHarvesting)
       
  1598                     {
       
  1599                     StartTimeout();
       
  1600                     }
  1587                 TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- MDS MMC harvesting finished ");
  1601                 TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- MDS MMC harvesting finished ");
  1588                 }
  1602                 }
  1589             }
  1603             }
  1590         
  1604         
  1591         //restart mount timout if MMC item count is still increasing 
  1605         //restart mount timout if MMC item count is still increasing 
  1627 // CThumbAGProcessor::StopTimeout()
  1641 // CThumbAGProcessor::StopTimeout()
  1628 // ---------------------------------------------------------------------------
  1642 // ---------------------------------------------------------------------------
  1629 //
  1643 //
  1630 void CThumbAGProcessor::CancelTimeout()
  1644 void CThumbAGProcessor::CancelTimeout()
  1631     {
  1645     {
       
  1646     TN_DEBUG1( "CThumbAGProcessor::CancelTimeout()");
  1632     if(iPeriodicTimer->IsActive())
  1647     if(iPeriodicTimer->IsActive())
  1633         {
  1648         {
  1634         iPeriodicTimer->Cancel();
  1649         iPeriodicTimer->Cancel();
  1635         }
  1650         }
  1636     }
  1651     }
  1669         {
  1684         {
  1670         TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - FORMATTING - DAEMON ON PAUSE");
  1685         TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - FORMATTING - DAEMON ON PAUSE");
  1671         return;
  1686         return;
  1672         }
  1687         }
  1673     
  1688     
  1674         
       
  1675     //check if forced run needs to continue
  1689     //check if forced run needs to continue
  1676     if ( iModifyItemCount || iUnknownItemCount > 0 )
  1690     if ( iModifyItemCount || iUnknownItemCount > 0 )
  1677         {
  1691         {
  1678         SetForceRun( ETrue );
  1692         SetForceRun( ETrue );
  1679         }
  1693         }
  2095     
  2109     
  2096         if( iGenerationQueue.Count() )
  2110         if( iGenerationQueue.Count() )
  2097             {
  2111             {
  2098             daemonProcessing = ETrue;
  2112             daemonProcessing = ETrue;
  2099             }
  2113             }
       
  2114         else
       
  2115             {
       
  2116             daemonProcessing = EFalse;
       
  2117             }
  2100         
  2118         
  2101         if( daemonProcessing != iPreviousDaemonProcessing)
  2119         if( daemonProcessing != iPreviousDaemonProcessing)
  2102             {
  2120             {
  2103             TN_DEBUG2( "CThumbAGProcessor::UpdatePSValues() update KDaemonProcessing == %d", daemonProcessing);
  2121             TN_DEBUG2( "CThumbAGProcessor::UpdatePSValues() update KDaemonProcessing == %d", daemonProcessing);
  2104             iPreviousDaemonProcessing = daemonProcessing;
  2122             iPreviousDaemonProcessing = daemonProcessing;
  2154     iVideoItemCount=0;
  2172     iVideoItemCount=0;
  2155     iAudioItemCount=0;
  2173     iAudioItemCount=0;
  2156     
  2174     
  2157     for(TInt i=0; i < iGenerationQueue.Count(); i++)
  2175     for(TInt i=0; i < iGenerationQueue.Count(); i++)
  2158     {
  2176     {
  2159     TThumbnailGenerationItem& item = iGenerationQueue[i];
  2177         TThumbnailGenerationItem& item = iGenerationQueue[i];
  2160     
  2178     
  2161         if(item.iItemAction == EGenerationItemActionModify)
  2179         if(item.iItemAction == EGenerationItemActionModify)
  2162             {
  2180             {
  2163             iModifyItemCount++;
  2181             iModifyItemCount++;
  2164             }
  2182             }
  2202             }
  2220             }
  2203     }
  2221     }
  2204     
  2222     
  2205     TN_DEBUG2( "CThumbAGProcessor::UpdateItemCounts() iActiveCount = %d", 
  2223     TN_DEBUG2( "CThumbAGProcessor::UpdateItemCounts() iActiveCount = %d", 
  2206             iActiveCount);
  2224             iActiveCount);
       
  2225     TN_DEBUG2( "CThumbAGProcessor::UpdateItemCounts() iPreviousItemsLeft = %d", 
       
  2226             iPreviousItemsLeft);
  2207     TN_DEBUG5( "CThumbAGProcessor::UpdateItemCounts() iHarvesting == %d, iMMCHarvesting == %d, iPHHarvesting == %d, iMPXHarvesting == %d", 
  2227     TN_DEBUG5( "CThumbAGProcessor::UpdateItemCounts() iHarvesting == %d, iMMCHarvesting == %d, iPHHarvesting == %d, iMPXHarvesting == %d", 
  2208             iHarvesting, iMMCHarvesting, iPHHarvesting, iMPXHarvesting);
  2228             iHarvesting, iMMCHarvesting, iPHHarvesting, iMPXHarvesting);
  2209     TN_DEBUG5( "CThumbAGProcessor::UpdateItemCounts() iIdle = %d, iForegroundRun = %d, timer = %d, iForceRun = %d", 
  2229     TN_DEBUG5( "CThumbAGProcessor::UpdateItemCounts() iIdle = %d, iForegroundRun = %d, timer = %d, iForceRun = %d", 
  2210             iIdle, iForegroundRun, iPeriodicTimer->IsActive(), iForceRun);
  2230             iIdle, iForegroundRun, iPeriodicTimer->IsActive(), iForceRun);
  2211     TN_DEBUG4( "CThumbAGProcessor::UpdateItemCounts() iModify = %d, iQueryReady = %d, iProcessingCount = %d", 
  2231     TN_DEBUG4( "CThumbAGProcessor::UpdateItemCounts() iModify = %d, iQueryReady = %d, iProcessingCount = %d", 
  2212             iModify, iQueryReady, iProcessingCount);
  2232             iModify, iQueryReady, iProcessingCount);
  2213     TN_DEBUG2( "CThumbAGProcessor::UpdateItemCounts() iMountTimer = %d", iMountTimer->IsActive());
  2233     TN_DEBUG2( "CThumbAGProcessor::UpdateItemCounts() iMountTimer = %d", iMountTimer->IsActive());
  2214     TN_DEBUG3( "CThumbAGProcessor::UpdateItemCounts() ProcessingQueue = %d, iQueryQueue = %d", 
  2234     TN_DEBUG3( "CThumbAGProcessor::UpdateItemCounts() iGenerationQueue = %d, iQueryQueue = %d", 
  2215             iGenerationQueue.Count(), iQueryQueue.Count());
  2235             iGenerationQueue.Count(), iQueryQueue.Count());
  2216     TN_DEBUG5( "CThumbAGProcessor::UpdateItemCounts() iAddItemCount=%d, i2ndAddItemCount=%d, iModifyItemCount=%d, iDeleteItemCount=%d",
  2236     TN_DEBUG5( "CThumbAGProcessor::UpdateItemCounts() iAddItemCount=%d, i2ndAddItemCount=%d, iModifyItemCount=%d, iDeleteItemCount=%d",
  2217             iAddItemCount, i2ndAddItemCount, iModifyItemCount, iDeleteItemCount );
  2237             iAddItemCount, i2ndAddItemCount, iModifyItemCount, iDeleteItemCount );
  2218     TN_DEBUG3( "CThumbAGProcessor::UpdateItemCounts() iUnknownItemCount=%d, iPlaceholderItemCount=%d",
  2238     TN_DEBUG3( "CThumbAGProcessor::UpdateItemCounts() iUnknownItemCount=%d, iPlaceholderItemCount=%d",
  2219             iUnknownItemCount, iPlaceholderItemCount);
  2239             iUnknownItemCount, iPlaceholderItemCount);
  2220     TN_DEBUG4( "CThumbAGProcessor::UpdateItemCounts() iAudioItemCount=%d, iVideoItemCount=%d, iImageItemCount=%d",
  2240     TN_DEBUG4( "CThumbAGProcessor::UpdateItemCounts() iAudioItemCount=%d, iVideoItemCount=%d, iImageItemCount=%d",
  2221             iAudioItemCount, iVideoItemCount, iImageItemCount);
  2241             iAudioItemCount, iVideoItemCount, iImageItemCount);
  2222     TN_DEBUG2( "CThumbAGProcessor::UpdateItemCounts() iCameraItemCount=%d", iCameraItemCount);
  2242     TN_DEBUG2( "CThumbAGProcessor::UpdateItemCounts() iCameraItemCount=%d", iCameraItemCount);
       
  2243     
       
  2244     //compress queues when empty
       
  2245     if(!iGenerationQueue.Count())
       
  2246         {
       
  2247         iGenerationQueue.Compress();
       
  2248         }
       
  2249     
       
  2250     if(!iQueryQueue.Count())
       
  2251         {
       
  2252         iQueryQueue.Compress();
       
  2253         }
  2223     }
  2254     }
  2224 
  2255 
  2225 
  2256 
  2226 // ---------------------------------------------------------------------------
  2257 // ---------------------------------------------------------------------------
  2227 // CThumbAGProcessor::MountTimerCallBack()
  2258 // CThumbAGProcessor::MountTimerCallBack()
  2231     {
  2262     {
  2232     TN_DEBUG1( "CThumbAGProcessor::MountTimerCallBack()");
  2263     TN_DEBUG1( "CThumbAGProcessor::MountTimerCallBack()");
  2233     CThumbAGProcessor* self = static_cast<CThumbAGProcessor*>( aAny );
  2264     CThumbAGProcessor* self = static_cast<CThumbAGProcessor*>( aAny );
  2234     
  2265     
  2235     self->iMountTimer->Cancel();
  2266     self->iMountTimer->Cancel();
       
  2267     
       
  2268     //activate timeout if overall or mmc harvestig is not active
       
  2269     if(!self->iHarvesting && !self->iMMCHarvesting )
       
  2270         {
       
  2271         self->ActivateAO();
       
  2272         }
  2236 
  2273 
  2237     return KErrNone; // Return value ignored by CPeriodic
  2274     return KErrNone; // Return value ignored by CPeriodic
  2238     }
  2275     }
  2239 
  2276 
  2240 // ---------------------------------------------------------------------------
  2277 // ---------------------------------------------------------------------------