diff -r 3e156c80c15d -r 9422ed56ee45 harvester/common/src/harvestereventmanager.cpp --- 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 )