Support fractional-second intervals on recurring timers

A fractional-second timeout was already supported for the initial timeout of a /TIMER, but
if the timer was recurring then the interval was rounded to a whole number of seconds for
the subsequent timeouts.

Change the type of interval from long to double to fix this.
This commit is contained in:
Kevin Easton
2017-10-11 23:21:14 +11:00
parent bbd18ba47e
commit 5839f2b393
3 changed files with 5 additions and 3 deletions

View File

@@ -1,5 +1,7 @@
[Changes 1.2.2]
* Support fractional-second intervals on recurring timers. (caf)
* Change $geom() to return current screen's geometry, not the original
terminal's. (caf)

View File

@@ -1043,7 +1043,7 @@ typedef struct timerlist_stru
char *command;
char *subargs;
int events;
time_t interval;
double interval;
int server;
int window;
char *whom;

View File

@@ -421,8 +421,8 @@ char *function_timer(char *n, char *args)
if (time_left < 0)
time_left = 0.0;
return m_sprintf("%s %d %d %ld %d %0.3f %s%s", t->ref, t->server,
t->window, (long)t->interval, t->events, time_left,
return m_sprintf("%s %d %d %.16g %d %0.3f %s%s", t->ref, t->server,
t->window, t->interval, t->events, time_left,
t->callback ? "(internal callback) " : t->command,
t->whom ? t->whom : "");
}