Jelajahi Sumber

fixbug: htimer_reset loop->ntimers

ithewei 5 tahun lalu
induk
melakukan
30631e83b0
1 mengubah file dengan 6 tambahan dan 6 penghapusan
  1. 6 6
      event/hloop.c

+ 6 - 6
event/hloop.c

@@ -491,14 +491,14 @@ void htimer_reset(htimer_t* timer) {
     }
     hloop_t* loop = timer->loop;
     htimeout_t* timeout = (htimeout_t*)timer;
-    if (timer->pending) {
-        if (timer->repeat == 0) {
-            timer->repeat = 1;
-        }
-    }
-    else {
+    if (timer->destroy) {
+        loop->ntimers++;
+    } else {
         heap_remove(&loop->timers, &timer->node);
     }
+    if (timer->repeat == 0) {
+        timer->repeat = 1;
+    }
     timer->next_timeout = hloop_now_hrtime(loop) + timeout->timeout*1000;
     heap_insert(&loop->timers, &timer->node);
     EVENT_RESET(timer);