1
This commit is contained in:
parent
231be446d1
commit
c1491eb18c
42
src/timer.rs
42
src/timer.rs
@ -176,7 +176,20 @@ impl Timer {
|
|||||||
(*v)(TimerEvent::Exec, None);
|
(*v)(TimerEvent::Exec, None);
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
match self.running_timer.upgrade() {
|
||||||
|
Some(v) => {
|
||||||
|
match v.borrow().timer_type {
|
||||||
|
TimerType::Timeout => {
|
||||||
|
//self.internalDelete
|
||||||
|
}
|
||||||
|
TimerType::Interval => {
|
||||||
|
//self.internalModify
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -231,6 +244,17 @@ impl Timer {
|
|||||||
return Rc::downgrade(&t.borrow().wp);
|
return Rc::downgrade(&t.borrow().wp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn internal_delete(&mut self, timer_wp: TimerWp, is_destory: bool) {
|
||||||
|
match timer_wp.upgrade() {
|
||||||
|
Some(v) => {
|
||||||
|
if Weak::ptr_eq(&self.running_timer, &Rc::downgrade(&v)) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None => {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn set_timeout(&mut self, time: i32, cb: TimerCb) -> TimerWp {
|
pub fn set_timeout(&mut self, time: i32, cb: TimerCb) -> TimerWp {
|
||||||
return self.internal_add(TimerType::Timeout, time, cb, None);
|
return self.internal_add(TimerType::Timeout, time, cb, None);
|
||||||
}
|
}
|
||||||
@ -264,7 +288,14 @@ impl Timer {
|
|||||||
pub fn is_running(&self) {
|
pub fn is_running(&self) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn delete(&mut self, _timer_wp: TimerWp) {
|
pub fn delete(&mut self, timer_wp: TimerWp) {
|
||||||
|
match timer_wp.upgrade() {
|
||||||
|
Some(v) => {
|
||||||
|
self.internal_delete(timer_wp, false);
|
||||||
|
}
|
||||||
|
None => {
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn reset(&mut self, _timer_wp: TimerWp) {
|
pub fn reset(&mut self, _timer_wp: TimerWp) {
|
||||||
@ -281,7 +312,12 @@ impl Timer {
|
|||||||
fn gc_timer(&mut self, e: TimerEvent, _args: Option<Vec<Rc::<dyn Any>>>) {
|
fn gc_timer(&mut self, e: TimerEvent, _args: Option<Vec<Rc::<dyn Any>>>) {
|
||||||
match e {
|
match e {
|
||||||
TimerEvent::Exec => {
|
TimerEvent::Exec => {
|
||||||
|
while self.free_timer_num > self.cache_timer_num &&
|
||||||
|
!self.free_timer_list.borrow().empty() {
|
||||||
|
let timer = &self.free_timer_list.borrow().first_entry();
|
||||||
|
timer.upgrade().unwrap().borrow_mut().timer_entry.borrow_mut().del_init();
|
||||||
|
self.free_timer_num -= 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
TimerEvent::Custom(_v) => {
|
TimerEvent::Custom(_v) => {
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user