Mercurial > emacs
comparison src/blockinput.h @ 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 | f7ca88e90856 |
children | 5a1dca465b50 |
comparison
equal
deleted
inserted
replaced
27425:e575223479a1 | 27426:e28edb0e4233 |
---|---|
48 | 48 |
49 /* Nonzero means an input interrupt has arrived | 49 /* Nonzero means an input interrupt has arrived |
50 during the current critical section. */ | 50 during the current critical section. */ |
51 extern int interrupt_input_pending; | 51 extern int interrupt_input_pending; |
52 | 52 |
53 | |
54 /* Non-zero means asynchronous timers should be run when input is | |
55 unblocked. */ | |
56 | |
57 extern int pending_atimers; | |
58 | |
53 /* Begin critical section. */ | 59 /* Begin critical section. */ |
54 #define BLOCK_INPUT (interrupt_input_blocked++) | 60 #define BLOCK_INPUT (interrupt_input_blocked++) |
55 | 61 |
56 /* End critical section. | 62 /* End critical section. |
57 | 63 |
65 files which use this macro don't #include the right files to get | 71 files which use this macro don't #include the right files to get |
66 SIGIO. | 72 SIGIO. |
67 | 73 |
68 So, we always test interrupt_input_pending now; that's not too | 74 So, we always test interrupt_input_pending now; that's not too |
69 expensive, and it'll never get set if we don't need to resignal. */ | 75 expensive, and it'll never get set if we don't need to resignal. */ |
70 #define UNBLOCK_INPUT \ | 76 |
71 (interrupt_input_blocked--, \ | 77 #define UNBLOCK_INPUT \ |
72 (interrupt_input_blocked < 0 ? (abort (), 0) : 0), \ | 78 do \ |
73 ((interrupt_input_blocked == 0 && interrupt_input_pending != 0) \ | 79 { \ |
74 ? (reinvoke_input_signal (), 0) \ | 80 --interrupt_input_blocked; \ |
75 : 0)) | 81 if (interrupt_input_blocked == 0) \ |
82 { \ | |
83 if (interrupt_input_pending) \ | |
84 reinvoke_input_signal (); \ | |
85 if (pending_atimers) \ | |
86 do_pending_atimers (); \ | |
87 } \ | |
88 else if (interrupt_input_blocked < 0) \ | |
89 abort (); \ | |
90 } \ | |
91 while (0) | |
76 | 92 |
77 #define TOTALLY_UNBLOCK_INPUT (interrupt_input_blocked = 0) | 93 #define TOTALLY_UNBLOCK_INPUT (interrupt_input_blocked = 0) |
78 #define UNBLOCK_INPUT_RESIGNAL UNBLOCK_INPUT | 94 #define UNBLOCK_INPUT_RESIGNAL UNBLOCK_INPUT |
79 | 95 |
80 /* Defined in keyboard.c */ | 96 /* Defined in keyboard.c */ |