harvester/common/src/harvestereventmanager.cpp
branchRCL_3
changeset 34 9422ed56ee45
parent 19 82c0024438c8
child 36 aa5a574040a4
--- a/harvester/common/src/harvestereventmanager.cpp	Wed Jun 09 10:09:20 2010 +0300
+++ b/harvester/common/src/harvestereventmanager.cpp	Mon Jun 21 16:09:02 2010 +0300
@@ -340,8 +340,6 @@
 
 	iRegisteredObservers.AppendL( observerInfo );
 
-	CleanupStack::Pop( observerInfo );
-	
 	// send event if register is coming in the middle of harvesting
 	for( TInt i = iEventStatuses.Count(); --i >= 0; )
 		{
@@ -349,13 +347,31 @@
 		if( CheckObserverType( observerInfo->iObserverType, 
 				eventStatus.iObserverType) )
 			{
-			if( eventStatus.iItemsLeft > 0 )
-				{
-				TRAP_IGNORE( SendEventL( eventStatus.iObserverType, 
-						eventStatus.iCurrentState, eventStatus.iItemsLeft ) );
-				}
+			TRAP_IGNORE( SendEventL( eventStatus.iObserverType, 
+					eventStatus.iCurrentState, eventStatus.iItemsLeft ) );
 			}
 		}
+	
+	//no events in queue, signal registered client anyways 
+	if( !iEventStatuses.Count() )
+	    {
+        if(observerInfo->iObserverType & EHEObserverTypeOverall)
+            {
+            SendSingleEvent(*observerInfo, EHEObserverTypeOverall, EHEStateUninitialized, 0);
+            }
+        
+        if(observerInfo->iObserverType & EHEObserverTypeMMC)
+            {
+            SendSingleEvent(*observerInfo, EHEObserverTypeMMC, EHEStateUninitialized, 0);
+            }
+        
+        if(observerInfo->iObserverType & EHEObserverTypePlaceholder)
+            {
+            SendSingleEvent(*observerInfo, EHEObserverTypePlaceholder, EHEStateUninitialized, 0);
+            }
+	    }
+	
+	CleanupStack::Pop( observerInfo );
 	}
 
 EXPORT_C TInt CHarvesterEventManager::UnregisterEventObserver( const RMessage2& aMessage )