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