Mercurial > emacs
diff src/keyboard.c @ 55596:0249aeeeaad6
(in_timer_check): New static var.
(timer_check): Use it to guard against reentry.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Fri, 14 May 2004 20:16:06 +0000 |
parents | a71808c780ee |
children | 2f83cdfb90f6 |
line wrap: on
line diff
--- a/src/keyboard.c Fri May 14 20:15:14 2004 +0000 +++ b/src/keyboard.c Fri May 14 20:16:06 2004 +0000 @@ -4249,6 +4249,8 @@ run the timer directly instead of queueing a timer-event. Now we always run timers directly. */ +static int in_timer_check = 0; + EMACS_TIME timer_check (do_it_now) int do_it_now; @@ -4261,6 +4263,11 @@ EMACS_SET_SECS (nexttime, -1); EMACS_SET_USECS (nexttime, -1); + if (in_timer_check) + return nexttime; + + in_timer_check = 1; + /* Always consider the ordinary timers. */ timers = Vtimer_list; /* Consider the idle timers only if Emacs is idle. */ @@ -4419,6 +4426,7 @@ return the amount of time to wait before it is ripe. */ { UNGCPRO; + in_timer_check = 0; return difference; } } @@ -4426,6 +4434,7 @@ /* No timers are pending in the future. */ /* Return 0 if we generated an event, and -1 if not. */ UNGCPRO; + in_timer_check = 0; return nexttime; }