From: Eli Zaretskii Date: Thu, 24 Sep 2015 18:04:42 +0000 (+0300) Subject: Prevent timers from messing up TTY menus X-Git-Tag: emacs-25.0.90~1224^2~24 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=58ecdad0b08d8b8414abee1e5e8c89a384b6306c;p=emacs.git Prevent timers from messing up TTY menus * src/term.c (tty_menu_activate): Inhibit redisplay for as long as the TTY menu is open. (Bug#21530) --- diff --git a/src/term.c b/src/term.c index 8ebb620dd9b..5acc47395db 100644 --- a/src/term.c +++ b/src/term.c @@ -3117,6 +3117,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx, Lisp_Object selectface; int first_item = 0; int col, row; + Lisp_Object prev_inhibit_redisplay = Vinhibit_redisplay; USE_SAFE_ALLOCA; /* Don't allow non-positive x0 and y0, lest the menu will wrap @@ -3159,6 +3160,11 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx, buffers_num_deleted = 1; } + /* Inhibit redisplay for as long as the menu is active, to avoid + messing the screen if some timer calls sit-for or a similar + function. */ + Vinhibit_redisplay = Qt; + /* Force update of the current frame, so that the desired and the current matrices are identical. */ update_frame_with_menu (sf, -1, -1); @@ -3349,6 +3355,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx, if (!kbd_buffer_events_waiting ()) clear_input_pending (); SAFE_FREE (); + Vinhibit_redisplay = prev_inhibit_redisplay; return result; }