- ASSERT(tm->index && tm->index <= main_timer_cnt);
- HEAP_DELETE(struct main_timer *, main_timer_table.ptr, main_timer_cnt, MAIN_TIMER_LESS, MAIN_TIMER_SWAP, tm->index);
- tm->index = 0;
+ if (!tm->expires)
+ {
+ tm->expires = expires;
+ tm->index = ++main_timer_cnt;
+ main_timer_table_grow(&main_timer_table, tm->index + 1);
+ main_timer_table.ptr[tm->index] = tm;
+ HEAP_INSERT(struct main_timer *, main_timer_table.ptr, main_timer_cnt, MAIN_TIMER_LESS, MAIN_TIMER_SWAP);
+ }
+ else
+ {
+ tm->expires = expires;
+ HEAP_INCREASE(struct main_timer *, main_timer_table.ptr, main_timer_cnt, MAIN_TIMER_LESS, MAIN_TIMER_SWAP, tm->index);
+ }