changeset 9489:c5f40fc2e3e0 v7.4.2025

commit https://github.com/vim/vim/commit/da3a77d9ec28407b8fa2aa014e76944d0a525662 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jul 10 23:16:09 2016 +0200 patch 7.4.2025 Problem: The cursor blinking stops or is irregular when receiving date over a channel and writing it in a buffer, and when updating the status line. (Ramel Eshed) Solution: Make it a bit better by flushing GUI output. Don't redraw the cursor after updating the screen if the blink state is off.
author Christian Brabandt <cb@256bit.org>
date Sun, 10 Jul 2016 23:30:05 +0200
parents dde9090b258a
children 652a3af98b81
files src/gui_gtk_x11.c src/screen.c src/version.c
diffstat 3 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -867,7 +867,10 @@ gui_mch_stop_blink(void)
 	blink_timer = 0;
     }
     if (blink_state == BLINK_OFF)
+    {
 	gui_update_cursor(TRUE, FALSE);
+	gui_mch_flush();
+    }
     blink_state = BLINK_NONE;
 }
 
@@ -902,6 +905,7 @@ blink_cb(gpointer data UNUSED)
 				   (GtkFunction) blink_cb, NULL);
 #endif
     }
+    gui_mch_flush();
 
     return FALSE;		/* don't happen again */
 }
@@ -934,6 +938,7 @@ gui_mch_start_blink(void)
 #endif
 	blink_state = BLINK_ON;
 	gui_update_cursor(TRUE, FALSE);
+	gui_mch_flush();
     }
 }
 
--- a/src/screen.c
+++ b/src/screen.c
@@ -757,7 +757,7 @@ update_screen(int type)
     if (gui.in_use)
     {
 	out_flush();	/* required before updating the cursor */
-	if (did_one)
+	if (did_one && !gui_mch_is_blink_off())
 	{
 	    /* Put the GUI position where the cursor was, gui_update_cursor()
 	     * uses that. */
--- a/src/version.c
+++ b/src/version.c
@@ -759,6 +759,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2025,
+/**/
     2024,
 /**/
     2023,