Mercurial > emacs
changeset 27426:e28edb0e4233
(pending_atimers): Add extern declaration.
(UNBLOCK_INPUT): Rewritten. Handle pending atimers.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Tue, 25 Jan 2000 15:53:45 +0000 |
parents | e575223479a1 |
children | 0036f90725f6 |
files | src/blockinput.h |
diffstat | 1 files changed, 22 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/blockinput.h Tue Jan 25 15:53:29 2000 +0000 +++ b/src/blockinput.h Tue Jan 25 15:53:45 2000 +0000 @@ -50,6 +50,12 @@ 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 @@ 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