And fixed it properly.

This commit is contained in:
OBattler
2023-08-14 22:50:18 +02:00
parent a4e39387a9
commit 9810269d39
2 changed files with 10 additions and 21 deletions

View File

@@ -29,10 +29,7 @@ timer_enable(pc_timer_t *timer)
if (timer->next || timer->prev)
fatal("timer_enable - timer->next\n");
if (timer->flags & TIMER_PROCESS)
timer->flags = (timer->flags & ~TIMER_PROCESS) | TIMER_ENABLE;
else
timer->flags |= TIMER_ENABLED;
timer->flags |= TIMER_ENABLED;
/*List currently empty - add to head*/
if (!timer_head) {
@@ -121,17 +118,15 @@ timer_process(void)
timer_head->prev = NULL;
timer->next = timer->prev = NULL;
timer->flags |= TIMER_PROCESS;
timer->flags &= ~TIMER_ENABLED;
if (timer->flags & TIMER_SPLIT)
timer_advance_ex(timer, 0); /* We're splitting a > 1 s period into multiple <= 1 s periods. */
else if (timer->callback != NULL) /* Make sure it's no NULL, so that we can have a NULL callback when no operation is needed. */
else if (timer->callback != NULL) {/* Make sure it's no NULL, so that we can have a NULL callback when no operation is needed. */
timer->flags |= TIMER_PROCESS;
timer->callback(timer->priv);
if (timer->flags |= TIMER_ENABLE)
timer->flags = (timer->flags & ~TIMER_ENABLE) | TIMER_ENABLED;
else
timer->flags &= ~TIMER_ENABLED;
timer->flags &= ~TIMER_PROCESS;
}
}
timer_target = timer_head->ts.ts32.integer;
@@ -240,7 +235,7 @@ timer_on_auto(pc_timer_t *timer, double period)
return;
if (period > 0.0)
timer_on(timer, period, !(timer->flags & TIMER_ENABLED) && (timer->period == 0.0));
timer_on(timer, period, !(timer->flags & TIMER_PROCESS) && (timer->period <= 0.0));
else
timer_stop(timer);
}