diff --git a/src/timer.rs b/src/timer.rs index f246698..cc87d16 100644 --- a/src/timer.rs +++ b/src/timer.rs @@ -141,7 +141,7 @@ impl Timer { let free_timer = |head: &TimerListListHeadRp| { while !head.borrow().empty() { let timer = &head.borrow().first_entry().upgrade().unwrap(); - //self.detach_timer(timer); + self.detach_timer(timer); if timer.borrow().attach_entry.borrow().empty() { timer.borrow().attach_entry.borrow_mut().del_init(); } @@ -324,6 +324,18 @@ impl Timer { self.running_timer = Weak::new(); } self.detach_timer(&*v); + match &mut v.borrow_mut().cb { + Some(cb) => { + if is_destory { + (*cb)(TimerEvent::Destory, None); + } else { + (*cb)(TimerEvent::Delete, None); + } + v.borrow_mut().cb = None; + } + None => { + } + } } None => { }