Optimization timeout removed.

development
0x1abin 4 years ago
parent ff1a4dff8f
commit 6208dc71fc

@ -101,17 +101,22 @@ int MultiTimerStop(MultiTimer* timer)
*/ */
void MultiTimerYield(void) void MultiTimerYield(void)
{ {
MultiTimer* target = timerList; MultiTimer** nextTimer = &timerList;
for (; target; target = target->next) {
if (target->deadline > platformTicksFunction()) { for (; *nextTimer; nextTimer = &(*nextTimer)->next) {
MultiTimer* entry = *nextTimer;
/* Sorted list, just process with the front part. */
if (entry->deadline > platformTicksFunction()) {
return; return;
} }
MultiTimerStop(target); /* remove expired timer from list */
if (target->period) { *nextTimer = entry->next;
MultiTimerStart(target, target->period);
if (entry->period) {
MultiTimerStart(entry, entry->period);
} }
if (target->callback) { if (entry->callback) {
target->callback(target, target->userData); entry->callback(entry, entry->userData);
} }
} }
} }

Loading…
Cancel
Save