patch 8.2.4166: undo synced when switching buffer in another window

Problem:    Undo synced when switching buffer in another window.
Solution:   Do not sync undo when not needed. (closes #9575)
diff --git a/src/buffer.c b/src/buffer.c
index 18aa2a0..d8d0f3c 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1744,7 +1744,11 @@
 	{
 	    win_T  *previouswin = curwin;
 
-	    if (prevbuf == curbuf)
+	    // Do not sync when in Insert mode and the buffer is open in
+	    // another window, might be a timer doing something in another
+	    // window.
+	    if (prevbuf == curbuf
+			 && ((State & INSERT) == 0 || curbuf->b_nwindows <= 1))
 		u_sync(FALSE);
 	    close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf,
 		    unload ? action : (action == DOBUF_GOTO