changeset 60416:306f7ce8d80d

(UNBLOCK_INPUT_TO): New macro. (TOTALLY_UNBLOCK_INPUT): Handle a pending signal if any.
author Richard M. Stallman <rms@gnu.org>
date Sun, 06 Mar 2005 15:59:44 +0000
parents fe3c6e97ccc6
children 4a07536ef0de
files src/blockinput.h
diffstat 1 files changed, 24 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/blockinput.h	Sun Mar 06 00:48:46 2005 +0000
+++ b/src/blockinput.h	Sun Mar 06 15:59:44 2005 +0000
@@ -94,7 +94,30 @@
     }						\
   while (0)
 
-#define TOTALLY_UNBLOCK_INPUT (interrupt_input_blocked = 0)
+/* Undo any number of BLOCK_INPUT calls,
+   and also reinvoke any pending signal.  */
+
+#define TOTALLY_UNBLOCK_INPUT			\
+  if (interrupt_input_blocked != 0)		\
+    {						\
+      interrupt_input_blocked = 1;		\
+      UNBLOCK_INPUT;				\
+    }						\
+  else
+
+/* Undo any number of BLOCK_INPUT calls down to level LEVEL,
+   and also (if the level is now 0) reinvoke any pending signal.  */
+
+#define UNBLOCK_INPUT_TO(LEVEL)				\
+  do							\
+    {							\
+      int oldlevel = interrupt_input_blocked;		\
+      interrupt_input_blocked = (LEVEL) + 1;		\
+      if (interrupt_input_blocked != oldlevel + 1)	\
+        UNBLOCK_INPUT;					\
+    }							\
+  while (0)
+
 #define UNBLOCK_INPUT_RESIGNAL UNBLOCK_INPUT
 
 /* In critical section ? */