int delete_timer(int id,int (*func)(int,unsigned int,int,int)) { if(id<=0 || id>=timer_data_num ){ printf("delete_timer error : no such timer %d\n",id); return -1; } if(timer_data[id].func != func){ printf("delete_timer error : function dismatch %08x(%s) != %08x(%s)\n", (int)timer_data[id].func,search_timer_func_list(timer_data[id].func), (int)func,search_timer_func_list(func)); return -2; } // そのうち消えるにまかせる timer_data[id].func = NULL; timer_data[id].type = TIMER_ONCE_AUTODEL; timer_data[id].tick-= 60*60*1000; return 0; }
int add_timer_interval(unsigned int tick, int (*func)(int,unsigned int,int,int), int id, int data, int interval) { int tid; if (interval < 1) { ShowError("add_timer_interval : function %08x(%s) has invalid interval %d!\n", (int)func, search_timer_func_list(func), interval); return -1; } tid = acquire_timer(); timer_data[tid].tick = tick; timer_data[tid].func = func; timer_data[tid].id = id; timer_data[tid].data = data; timer_data[tid].type = TIMER_INTERVAL; timer_data[tid].interval = interval; push_timer_heap(tid); if (tid >= timer_data_num) timer_data_num = tid + 1; return tid; }