Adds a task to the linked list. This must be called from within a critical section. */
| 66 | |
| 67 | /* Adds a task to the linked list. This must be called from within a critical section. */ |
| 68 | void xnSchedulerAddTaskInternal(XnScheduler* pScheduler, XnScheduledTask* pTask) |
| 69 | { |
| 70 | // check if should be first in queue |
| 71 | if (pScheduler->pFirst == NULL || pScheduler->pFirst->nNextTime > pTask->nNextTime) |
| 72 | { |
| 73 | pTask->pNextTask = pScheduler->pFirst; |
| 74 | pScheduler->pFirst = pTask; |
| 75 | } |
| 76 | else |
| 77 | { |
| 78 | XnScheduledTask* pAfter = pScheduler->pFirst; |
| 79 | |
| 80 | // move until place is found |
| 81 | while (pAfter->pNextTask != NULL && pAfter->nNextTime < pTask->nNextTime) |
| 82 | pAfter = pAfter->pNextTask; |
| 83 | |
| 84 | pTask->pNextTask = pAfter->pNextTask; |
| 85 | pAfter->pNextTask = pTask; |
| 86 | } |
| 87 | } |
| 88 | |
| 89 | /* This is the actual scheduler function. It is being run in its own thread. */ |
| 90 | XN_THREAD_PROC xnSchedulerThreadFunc(XN_THREAD_PARAM pThreadParam) |
no outgoing calls
no test coverage detected