From: Richard M. Stallman Date: Sat, 30 Apr 1994 07:51:48 +0000 (+0000) Subject: (record_asynch_buffer_change): Block SIGIO. X-Git-Tag: emacs-19.34~8628 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=241ceaf7a26610efcb7b28947af74518474f2556;p=emacs.git (record_asynch_buffer_change): Block SIGIO. (force_auto_save_soon): Call record_asynch_buffer_change. --- diff --git a/src/keyboard.c b/src/keyboard.c index d1cda6c6ffd..1532141c45f 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -674,6 +674,8 @@ record_auto_save () force_auto_save_soon () { last_auto_save = - auto_save_interval - 1; + + record_asynch_buffer_change (); } 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 (); + } } #ifndef VMS