void CEventManager::ProcessEvents()
{
	while(!m_cEventList.empty())
	{
		IEvent* pEvent = *m_cEventList.begin();

		// Remove from the list now to avoid problems with sorting new events
		m_cEventList.erase(m_cEventList.begin());

		// Make range of listeners for the current event
		pair<EventIter, EventIter> range;
		range = m_cListeners.equal_range(pEvent->GetEventID());


		for(EventIter cMapIter = range.first; cMapIter != range.second; 
			cMapIter++)
		{
			// Call the callback function of each listener listening for this
			// event
			//if(cMapIter->second->m_pcListener->GetIsActive())
			{
				cMapIter->second->m_pfCallback(pEvent, 
					cMapIter->second->m_pcListener);
			}
		}

		// clean up the event's memory
		MMDELEVENT(pEvent);

		// Unregister any events
		UnregisterEvents();
	}
}	
HRESULT CManagerEventsTrigger::RegisterEvents(CManagerEvents* pCall)
{
	UnregisterEvents(pCall);
	Events.push_back(pCall);
	return S_OK;
}
Example #3
0
PIEventHandler::~PIEventHandler()
{ 
	UnregisterEvents(); 
}