]> git.eshelyaron.com Git - emacs.git/commitdiff
(record_asynch_buffer_change): Block SIGIO.
authorRichard M. Stallman <rms@gnu.org>
Sat, 30 Apr 1994 07:51:48 +0000 (07:51 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sat, 30 Apr 1994 07:51:48 +0000 (07:51 +0000)
(force_auto_save_soon): Call record_asynch_buffer_change.

src/keyboard.c

index d1cda6c6ffd2ca82ca0803e4cc8afd7ca975033b..1532141c45f2e63771203ee4a93a7ae2add81ef6 100644 (file)
@@ -674,6 +674,8 @@ record_auto_save ()
 force_auto_save_soon ()
 {
   last_auto_save = - auto_save_interval - 1;
+
+  record_asynch_buffer_change ();
 }
 \f
 DEFUN ("recursive-edit", Frecursive_edit, Srecursive_edit, 0, 0, "",
@@ -3288,12 +3290,31 @@ gobble_input (expected)
 #endif
 }
 
+/* Put a buffer_switch_event in the buffer
+   so that read_key_sequence will notice the new current buffer.  */
+
 record_asynch_buffer_change ()
 {
   struct input_event event;
   event.kind = buffer_switch_event;
   event.frame_or_window = Qnil;
-  kbd_buffer_store_event (&event);
+
+  /* Make sure no interrupt happens while storing the event.  */
+#ifdef SIGIO
+  if (interrupt_input)
+    {
+      SIGMASKTYPE mask;
+      mask = sigblockx (SIGIO);
+      kbd_buffer_store_event (&event);
+      sigsetmask (mask);
+    }
+  else
+#endif
+    {
+      stop_polling ();
+      kbd_buffer_store_event (&event);
+      start_polling ();
+    }
 }
 \f
 #ifndef VMS