]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix "emacs -nw" on MS-Windows
authorEli Zaretskii <eliz@gnu.org>
Sun, 28 Jan 2024 08:19:48 +0000 (10:19 +0200)
committerEshel Yaron <me@eshelyaron.com>
Wed, 31 Jan 2024 20:10:40 +0000 (21:10 +0100)
* src/w32term.c (w32_flip_buffers_if_dirty): Do nothing if F is
not a GUI frame.  This avoids rare crashes in "emacs -nw".
* src/w32console.c (initialize_w32_display): Set the
ENABLE_EXTENDED_FLAGS bit in 'prev_console_mode'.

(cherry picked from commit e1970c99f097715fc5bb3b88154799bfe13de90f)

src/w32console.c
src/w32term.c

index c2b87928cc1835098f5fb28cced500847432702e..0936b5f37e6052ee6970841d491b051d77d0204d 100644 (file)
@@ -705,6 +705,10 @@ initialize_w32_display (struct terminal *term, int *width, int *height)
   /* Remember original console settings.  */
   keyboard_handle = GetStdHandle (STD_INPUT_HANDLE);
   GetConsoleMode (keyboard_handle, &prev_console_mode);
+  /* Make sure ENABLE_EXTENDED_FLAGS is set in console settings,
+     otherwise restoring the original setting of ENABLE_MOUSE_INPUT
+     will not work.  */
+  prev_console_mode |= ENABLE_EXTENDED_FLAGS;
 
   prev_screen = GetStdHandle (STD_OUTPUT_HANDLE);
 
index f561177263753b02a387fae6a6f590dbe86cbf44..7afd1303b4d4ba573b2018c8e12ca36f699af405 100644 (file)
@@ -776,12 +776,13 @@ w32_buffer_flipping_unblocked_hook (struct frame *f)
 
 /* Flip buffers on F if drawing has happened.  This function is not
    called to flush the display connection of a frame (which doesn't
-   exist on MS Windows), but also called in some situations in
+   exist on MS Windows), but is called in some situations in
    minibuf.c to make the contents of the back buffer visible.  */
 void
 w32_flip_buffers_if_dirty (struct frame *f)
 {
-  if (FRAME_OUTPUT_DATA (f)->paint_buffer
+  if (FRAME_W32_P (f)  /* do nothing in TTY frames */
+      && FRAME_OUTPUT_DATA (f)->paint_buffer
       && FRAME_OUTPUT_DATA (f)->paint_buffer_dirty
       && !f->garbaged && !buffer_flipping_blocked_p ())
     w32_show_back_buffer (f);