diff --git a/lib/nodes/signal.c b/lib/nodes/signal.c index ab1353c9f..4b64808ec 100644 --- a/lib/nodes/signal.c +++ b/lib/nodes/signal.c @@ -117,18 +117,17 @@ int signal_read(struct node *n, struct sample *smps[], unsigned cnt) struct sample *t = smps[0]; struct timespec now; + int steps; assert(cnt == 1); /* Throttle output if desired */ if (s->rt) { /* Block until 1/p->rate seconds elapsed */ - int steps = timerfd_wait(s->tfd); + steps = timerfd_wait(s->tfd); if (steps > 1) warn("Missed steps: %u", steps); - s->counter += steps; - now = time_now(); } else { @@ -136,7 +135,7 @@ int signal_read(struct node *n, struct sample *smps[], unsigned cnt) now = time_add(&s->started, &offset); - s->counter += 1; + steps = 1; } double running = time_delta(&s->started, &now); @@ -162,6 +161,8 @@ int signal_read(struct node *n, struct sample *smps[], unsigned cnt) killme(SIGTERM); } + s->counter += steps; + return 1; }