Fix "emacs -nw" on MS-Windows

* 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'.
This commit is contained in:
Eli Zaretskii 2024-01-28 10:19:48 +02:00
parent c4d16909fa
commit e1970c99f0
2 changed files with 7 additions and 2 deletions

View 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);

View 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);