diff options
| author | Gerd Moellmann | 2000-01-25 15:53:45 +0000 |
|---|---|---|
| committer | Gerd Moellmann | 2000-01-25 15:53:45 +0000 |
| commit | 95d9dd00bd0208627814b7e3b9f1ac2643fbf0de (patch) | |
| tree | f8c4a78a8dcbb73747809034932427a7a0111e6a /src | |
| parent | 7555d825715df23e8d7fd27356ae5394bb73a81b (diff) | |
| download | emacs-95d9dd00bd0208627814b7e3b9f1ac2643fbf0de.tar.gz emacs-95d9dd00bd0208627814b7e3b9f1ac2643fbf0de.zip | |
(pending_atimers): Add extern declaration.
(UNBLOCK_INPUT): Rewritten. Handle pending atimers.
Diffstat (limited to 'src')
| -rw-r--r-- | src/blockinput.h | 28 |
1 files changed, 22 insertions, 6 deletions
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; | |||
| 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 | ||
| @@ -67,12 +73,22 @@ extern int interrupt_input_pending; | |||
| 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 |