summaryrefslogtreecommitdiff
path: root/src/w32term.c
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2022-04-30 18:54:34 +0800
committerPo Lu <luangruo@yahoo.com>2022-04-30 18:54:34 +0800
commit57447f5ce0a723f698d1515485860ca17ce93960 (patch)
tree68daa5ac0fcb26c26edb389d47285947d062737d /src/w32term.c
parent5fd54723536efca5589f9b9ac64825e76f0d1360 (diff)
downloademacs-57447f5ce0a723f698d1515485860ca17ce93960.tar.gz
Fix display updating inside the minibuffer on MS Windows
* src/minibuf.c (read_minibuf): Call `w32_flip_buffers_if_dirty' after changing the cursor position and redisplaying instead of `flush_frame'. (bug#55193) * src/w32term.c (w32_flip_buffers_if_dirty): New function. * src/w32term.h: Update prototypes.
Diffstat (limited to 'src/w32term.c')
-rw-r--r--src/w32term.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/w32term.c b/src/w32term.c
index 0c16dc1eef4..11675085fcc 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -774,6 +774,19 @@ w32_buffer_flipping_unblocked_hook (struct frame *f)
w32_show_back_buffer (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
+ 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
+ && FRAME_OUTPUT_DATA (f)->paint_buffer_dirty
+ && !f->garbaged && !buffer_flipping_blocked_p ())
+ w32_show_back_buffer (f);
+}
+
/* Draw truncation mark bitmaps, continuation mark bitmaps, overlay
arrow bitmaps, or clear the fringes if no bitmaps are required
before DESIRED_ROW is made current. This function is called from