20 #ifdef STDSCHEDULER_USE_EVENTS 
   27     return GetEvent() && WaitForSingleObject(GetEvent(), 0) == WAIT_OBJECT_0;
 
   34     if (!Event.WaitFor(0)) 
return false;
 
   43     int iEventCnt = 0; HANDLE hEvent;
 
   45     for (i = 0u; i < procs.size(); i++)
 
   48         if ( (hEvent = proc->GetEvent()) )
 
   50             if (hEvent == STDSCHEDULER_EVENT_MESSAGE)
 
   54                 eventHandles[iEventCnt] = hEvent;
 
   55                 eventProcs[iEventCnt] = proc;
 
   64         ret = MsgWaitForMultipleObjects(iEventCnt, eventHandles.data(), 
false, dwMsec, QS_ALLINPUT);
 
   66         ret = WaitForMultipleObjects(iEventCnt, eventHandles.data(), 
false, dwMsec);
 
   71     if (ret != WAIT_TIMEOUT)
 
   74         int iEventNr = ret - WAIT_OBJECT_0;
 
   77         StdSchedulerProc *pProc = iEventNr < iEventCnt ? eventProcs[iEventNr] : pMessageProc;
 
   90     for (
size_t i_proc = 0u; i_proc < procs.size(); ++i_proc)
 
   94         if (tProcTick <= tNow)
 
  106 int CStdMultimediaTimerProc::iTimePeriod = 0;
 
  109         uCriticalTimerDelay(28),
 
  111         uCriticalTimerResolution(5),
 
  119         timeGetDevCaps(&tc, 
sizeof(tc));
 
  121         uCriticalTimerResolution = 
Clamp(uCriticalTimerResolution, tc.wPeriodMin, tc.wPeriodMax);
 
  122         timeBeginPeriod(uCriticalTimerResolution);
 
  130 CStdMultimediaTimerProc::~CStdMultimediaTimerProc()
 
  134         timeKillEvent(idCriticalTimer);
 
  139             timeEndPeriod(uCriticalTimerResolution);
 
  143 void CStdMultimediaTimerProc::SetDelay(uint32_t iDelay)
 
  148         timeKillEvent(idCriticalTimer);
 
  151     uCriticalTimerDelay = iDelay;
 
  154     idCriticalTimer=timeSetEvent(
 
  155                       uCriticalTimerDelay,uCriticalTimerResolution,
 
  156                       (LPTIMECALLBACK) Event.GetEvent(),0,TIME_PERIODIC | TIME_CALLBACK_EVENT_SET);
 
  158     if(idCriticalTimer == 0)
 
  159         DebugLogF(
"Creating Critical Timer failed: %d", GetLastError());
 
  164     if (procs.size() > eventProcs.size())
 
  166         eventProcs.resize(procs.size());
 
  167         eventHandles.resize(procs.size()+1);
 
  183 bool CStdMultimediaTimerProc::CheckAndReset()
 
  185     if (!Check()) 
return false;
 
bool DebugLogF(const char *strMessage ...)
 
T Clamp(T bval, T lbound, T rbound)
 
#define CStdMultimediaTimerProc
 
static C4TimeMilliseconds Now()
 
virtual void OnError(StdSchedulerProc *)
 
virtual bool DoScheduleProcs(int iTimeout)
 
void Added(StdSchedulerProc *pProc)
 
void StartOnCurrentThread()
 
void Removing(StdSchedulerProc *pProc)
 
void Changed(StdSchedulerProc *pProc)
 
virtual C4TimeMilliseconds GetNextTick(C4TimeMilliseconds tNow)
 
virtual bool Execute(int iTimeout=-1, pollfd *readyfds=nullptr)=0