diff options
| author | Richard M. Stallman <rms@gnu.org> | 1994-04-30 07:51:48 +0000 |
|---|---|---|
| committer | Richard M. Stallman <rms@gnu.org> | 1994-04-30 07:51:48 +0000 |
| commit | 241ceaf7a26610efcb7b28947af74518474f2556 (patch) | |
| tree | f8be8e6e75f970c9b3df62dd4d06121d4a5d2968 | |
| parent | 5846638c2812ff6934f6a7cc7bf9dc051854515e (diff) | |
| download | emacs-241ceaf7a26610efcb7b28947af74518474f2556.tar.gz | |
(record_asynch_buffer_change): Block SIGIO.
(force_auto_save_soon): Call record_asynch_buffer_change.
| -rw-r--r-- | src/keyboard.c | 23 |
1 files changed, 22 insertions, 1 deletions
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 |
