]> git.eshelyaron.com Git - emacs.git/commitdiff
(UNBLOCK_INPUT_TO): New macro.
authorRichard M. Stallman <rms@gnu.org>
Sun, 6 Mar 2005 15:59:44 +0000 (15:59 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sun, 6 Mar 2005 15:59:44 +0000 (15:59 +0000)
(TOTALLY_UNBLOCK_INPUT): Handle a pending signal if any.

src/blockinput.h

index a4c8a9b9c2285e32e79b70d479bda4e929b504da..a3b50d2a0f26b0c51e95aa1a793bbe1a6742dcb2 100644 (file)
@@ -94,7 +94,30 @@ extern int pending_atimers;
     }                                          \
   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 ? */