]> granicus.if.org Git - vim/commitdiff
updated for version 7.2-305 v7.2.305
authorBram Moolenaar <Bram@vim.org>
Wed, 25 Nov 2009 12:08:03 +0000 (12:08 +0000)
committerBram Moolenaar <Bram@vim.org>
Wed, 25 Nov 2009 12:08:03 +0000 (12:08 +0000)
src/screen.c
src/version.c

index 5acc7dc40bae2bdad9fc402b21359f68c808ecd9..79980e90fdb8a4ddd436e60da56acace8a2f0619 100644 (file)
@@ -323,6 +323,7 @@ update_screen(type)
     int                did_one;
 #endif
 
+    /* Don't do anything if the screen structures are (not yet) valid. */
     if (!screen_valid(TRUE))
        return;
 
@@ -342,7 +343,9 @@ update_screen(type)
     if (curwin->w_lines_valid == 0 && type < NOT_VALID)
        type = NOT_VALID;
 
-    if (!redrawing())
+    /* Postpone the redrawing when it's not needed and when being called
+     * recursively. */
+    if (!redrawing() || updating_screen)
     {
        redraw_later(type);             /* remember type for next time */
        must_redraw = type;
@@ -582,6 +585,7 @@ static void update_finish __ARGS((void));
 
 /*
  * Prepare for updating one or more windows.
+ * Caller must check for "updating_screen" already set to avoid recursiveness.
  */
     static void
 update_prepare()
@@ -663,7 +667,9 @@ update_debug_sign(buf, lnum)
            doit = TRUE;
     }
 
-    if (!doit)
+    /* Return when there is nothing to do or screen updating already
+     * happening. */
+    if (!doit || updating_screen)
        return;
 
     /* update all windows that need updating */
@@ -696,6 +702,10 @@ update_debug_sign(buf, lnum)
 updateWindow(wp)
     win_T      *wp;
 {
+    /* return if already busy updating */
+    if (updating_screen)
+       return;
+
     update_prepare();
 
 #ifdef FEAT_CLIPBOARD
index d27eeb5d0b67b5e3616c9b99aeafa6fd66594588..7efd436119c695b3268b24f0b75c31f2d90fadb7 100644 (file)
@@ -681,6 +681,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    305,
 /**/
     304,
 /**/