From: Gerd Moellmann Date: Tue, 25 Jan 2000 15:53:45 +0000 (+0000) Subject: (pending_atimers): Add extern declaration. X-Git-Tag: emacs-pretest-21.0.90~5262 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=95d9dd00bd0208627814b7e3b9f1ac2643fbf0de;p=emacs.git (pending_atimers): Add extern declaration. (UNBLOCK_INPUT): Rewritten. Handle pending atimers. --- diff --git a/src/blockinput.h b/src/blockinput.h index 335b3b5b2d4..4e1d8524142 100644 --- a/src/blockinput.h +++ b/src/blockinput.h @@ -50,6 +50,12 @@ extern int interrupt_input_blocked; during the current critical section. */ extern int interrupt_input_pending; + +/* Non-zero means asynchronous timers should be run when input is + unblocked. */ + +extern int pending_atimers; + /* Begin critical section. */ #define BLOCK_INPUT (interrupt_input_blocked++) @@ -67,12 +73,22 @@ extern int interrupt_input_pending; So, we always test interrupt_input_pending now; that's not too expensive, and it'll never get set if we don't need to resignal. */ -#define UNBLOCK_INPUT \ - (interrupt_input_blocked--, \ - (interrupt_input_blocked < 0 ? (abort (), 0) : 0), \ - ((interrupt_input_blocked == 0 && interrupt_input_pending != 0) \ - ? (reinvoke_input_signal (), 0) \ - : 0)) + +#define UNBLOCK_INPUT \ + do \ + { \ + --interrupt_input_blocked; \ + if (interrupt_input_blocked == 0) \ + { \ + if (interrupt_input_pending) \ + reinvoke_input_signal (); \ + if (pending_atimers) \ + do_pending_atimers (); \ + } \ + else if (interrupt_input_blocked < 0) \ + abort (); \ + } \ + while (0) #define TOTALLY_UNBLOCK_INPUT (interrupt_input_blocked = 0) #define UNBLOCK_INPUT_RESIGNAL UNBLOCK_INPUT