示例#1
0
void NetscapePlugin::Timer::timerFired()
{
    m_timerFunc(&m_netscapePlugin->m_npp, m_timerID);

    if (!m_repeat)
        m_netscapePlugin->unscheduleTimer(m_timerID);
}
    void PluginTimer::fired()
    {
        if (!m_unscheduled) {
            m_fired = true;
            m_timerFunc(m_instance, m_timerID);
            m_fired = false;
        }

        if (!m_repeat || m_unscheduled)
            delete this;
    }
示例#3
0
void CTimer::OnTimer()
{
#ifndef WIN32
	fd_set fdSet;
	FD_ZERO(&fdSet);
	FD_SET(m_event[0], &fdSet);

	timeval tv;
#endif
	while (m_bStart)
	{
#ifdef WIN32
		if (WaitForSingleObject(m_event, m_nExpires) == WAIT_OBJECT_0)
		{
			J_OS::LOGERROR("CTimer::OnTimer() Timer WaitForSingleObject error");
			break;
		}
#else
		tv.tv_sec = m_nExpires / 1000;
		tv.tv_usec = (m_nExpires % 1000) * 1000;

		FD_ZERO(&fdSet);
		FD_SET(m_event[0], &fdSet);
		 
		if(select(m_event[0] + 1, &fdSet, NULL, NULL, &tv) < 0)
		{
			if (errno == EINTR)
				continue;
				
			J_OS::LOGERROR("CTimer::OnTimer() Timer select error");
			break;
		}
		if(FD_ISSET(m_event[0], &fdSet))
		{
			char end_buf;
			read(m_event[0], &end_buf, 1);
			close(m_event[0]);
			m_bStart = false;
			break;
		}
#endif
		m_timerFunc(m_pUser);
	}
}