diff --git a/src/evalfunc.c b/src/evalfunc.c
index 8a1fcef..90fb888 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -13073,6 +13073,8 @@
 
 	if (STRCMP(name, (char_u *)"redraw") == 0)
 	    disable_redraw_for_testing = val;
+	else if (STRCMP(name, (char_u *)"redraw_flag") == 0)
+	    ignore_redraw_flag_for_testing = val;
 	else if (STRCMP(name, (char_u *)"char_avail") == 0)
 	    disable_char_avail_for_testing = val;
 	else if (STRCMP(name, (char_u *)"starting") == 0)
@@ -13095,6 +13097,7 @@
 	{
 	    disable_char_avail_for_testing = FALSE;
 	    disable_redraw_for_testing = FALSE;
+	    ignore_redraw_flag_for_testing = FALSE;
 	    nfa_fail_for_testing = FALSE;
 	    if (save_starting >= 0)
 	    {
diff --git a/src/globals.h b/src/globals.h
index fa5b493..3446cba 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1633,9 +1633,10 @@
 EXTERN int  alloc_fail_repeat INIT(= 0);
 
 /* flags set by test_override() */
-EXTERN int  disable_char_avail_for_testing INIT(= 0);
-EXTERN int  disable_redraw_for_testing INIT(= 0);
-EXTERN int  nfa_fail_for_testing INIT(= 0);
+EXTERN int  disable_char_avail_for_testing INIT(= FALSE);
+EXTERN int  disable_redraw_for_testing INIT(= FALSE);
+EXTERN int  ignore_redraw_flag_for_testing INIT(= FALSE);
+EXTERN int  nfa_fail_for_testing INIT(= FALSE);
 
 EXTERN int  in_free_unref_items INIT(= FALSE);
 #endif
diff --git a/src/os_unix.c b/src/os_unix.c
index 9966221..f330426 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -417,10 +417,14 @@
 	    handle_resize();
 
 #ifdef MESSAGE_QUEUE
-	parse_queued_messages();
-	/* If input was put directly in typeahead buffer bail out here. */
-	if (typebuf_changed(tb_change_cnt))
-	    return 0;
+	// Only process messages when waiting.
+	if (wtime != 0)
+	{
+	    parse_queued_messages();
+	    // If input was put directly in typeahead buffer bail out here.
+	    if (typebuf_changed(tb_change_cnt))
+		return 0;
+	}
 #endif
 	if (wtime < 0 && did_start_blocking)
 	    /* blocking and already waited for p_ut */
diff --git a/src/os_win32.c b/src/os_win32.c
index 02bcaae..9d36dec 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -1529,15 +1529,19 @@
      */
     for (;;)
     {
+	// Only process messages when waiting.
+	if (msec != 0)
+	{
 #ifdef MESSAGE_QUEUE
-	parse_queued_messages();
+	    parse_queued_messages();
 #endif
 #ifdef FEAT_MZSCHEME
-	mzvim_check_threads();
+	    mzvim_check_threads();
 #endif
 #ifdef FEAT_CLIENTSERVER
-	serverProcessPendingMessages();
+	    serverProcessPendingMessages();
 #endif
+	}
 
 	if (0
 #ifdef FEAT_MOUSE
diff --git a/src/screen.c b/src/screen.c
index 743c321..c9f9410 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -10819,8 +10819,11 @@
 	return 0;
     else
 #endif
-	return (!RedrawingDisabled
-		       && !(p_lz && char_avail() && !KeyTyped && !do_redraw));
+	return ((!RedrawingDisabled
+#ifdef FEAT_EVAL
+		    || ignore_redraw_flag_for_testing
+#endif
+		) && !(p_lz && char_avail() && !KeyTyped && !do_redraw));
 }
 
 /*
diff --git a/src/version.c b/src/version.c
index ab77c13..9e399a6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -795,6 +795,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    349,
+/**/
     348,
 /**/
     347,
