diff src/keyboard.c @ 83053:84bfe7168c06

Block more input during read_avail_input. src/keyboard.c (read_avail_input): Added BLOCK_INPUT. Return -1 when input is blocked or if we could not read input and a display's input hook signalled an error. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-93
author Karoly Lorentey <lorentey@elte.hu>
date Tue, 24 Feb 2004 18:00:36 +0000
parents b8aef5cd0bf2
children d651f25811d5
line wrap: on
line diff
--- a/src/keyboard.c	Fri Feb 20 23:54:53 2004 +0000
+++ b/src/keyboard.c	Tue Feb 24 18:00:36 2004 +0000
@@ -6586,8 +6586,17 @@
 {
   register int i;
   int nread = 0;
+  int err;
   struct display *d;
 
+  if (interrupt_input_blocked)
+    {
+      interrupt_input_pending = 1;
+      return -1;
+    }
+
+  BLOCK_INPUT;
+
   /* Loop through the available displays, and call their input hooks. */
   d = display_list;
   while (d)
@@ -6625,6 +6634,10 @@
                       discard = 1;
                   }
               }
+            else if (nr == -1)          /* Not OK to read input now. */
+              {
+                err = 1;
+              }
             else if (nr == -2)          /* Non-transient error. */
               {
                 /* The display device terminated; it should be closed. */
@@ -6653,6 +6666,11 @@
       d = next;
     }
 
+  if (err && !nread)
+    nread = -1;
+
+  UNBLOCK_INPUT;
+
   return nread;
 }