485 |
long int time_shift, void (*callback) (void *), |
long int time_shift, void (*callback) (void *), |
486 |
void *data) |
void *data) |
487 |
{ |
{ |
|
static timer_id timer_id_cnt = 0; /* for timer identifiers */ |
|
488 |
struct timer_pq_node *new_node; |
struct timer_pq_node *new_node; |
489 |
|
|
490 |
if (timer_q.size == 0) { |
if (timer_q.size == 0) { |
494 |
} |
} |
495 |
|
|
496 |
new_node = (struct timer_pq_node*)malloc (sizeof(struct timer_pq_node)); |
new_node = (struct timer_pq_node*)malloc (sizeof(struct timer_pq_node)); |
497 |
new_node->id = timer_id_cnt++; /* TODO may overflow! */ |
new_node->id = (int)new_node; |
498 |
new_node->next_alarm = next_alarm; |
new_node->next_alarm = next_alarm; |
499 |
new_node->time_incr = time_incr; |
new_node->time_incr = time_incr; |
500 |
new_node->time_shift = time_shift; |
new_node->time_shift = time_shift; |
575 |
timer->next_alarm = now + timer->time_incr; |
timer->next_alarm = now + timer->time_incr; |
576 |
} |
} |
577 |
} |
} |
578 |
tmp_node.id = timer->id; |
pq_chpri (timer, timer->next_alarm, &timer_q); |
|
pq_chpri (&tmp_node, timer->next_alarm, &timer_q); |
|
579 |
} |
} |
580 |
else { |
else { |
581 |
dmx_remove_timer (timer->id); |
dmx_remove_timer (timer->id); |