mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.0.0619: GUI gets stuck if timer uses feedkeys()
Problem: In the GUI, when a timer uses feedkeys(), it still waits for an event. (Raymond Ko) Solution: Check tb_change_cnt in one more place.
This commit is contained in:
parent
bb7943b792
commit
9472eec83c
13
src/gui.c
13
src/gui.c
@ -2849,6 +2849,10 @@ gui_insert_lines(int row, int count)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns OK if a character was found to be available within the given time,
|
||||
* or FAIL otherwise.
|
||||
*/
|
||||
static int
|
||||
gui_wait_for_chars_or_timer(long wtime)
|
||||
{
|
||||
@ -2869,16 +2873,16 @@ gui_wait_for_chars_or_timer(long wtime)
|
||||
if (typebuf.tb_change_cnt != tb_change_cnt)
|
||||
{
|
||||
/* timer may have used feedkeys() */
|
||||
return FALSE;
|
||||
return FAIL;
|
||||
}
|
||||
if (due_time <= 0 || (wtime > 0 && due_time > remaining))
|
||||
due_time = remaining;
|
||||
if (gui_mch_wait_for_chars(due_time))
|
||||
return TRUE;
|
||||
return OK;
|
||||
if (wtime > 0)
|
||||
remaining -= due_time;
|
||||
}
|
||||
return FALSE;
|
||||
return FAIL;
|
||||
#else
|
||||
return gui_mch_wait_for_chars(wtime);
|
||||
#endif
|
||||
@ -2896,6 +2900,7 @@ gui_wait_for_chars_or_timer(long wtime)
|
||||
gui_wait_for_chars(long wtime)
|
||||
{
|
||||
int retval;
|
||||
int tb_change_cnt = typebuf.tb_change_cnt;
|
||||
|
||||
#ifdef FEAT_MENU
|
||||
/*
|
||||
@ -2953,7 +2958,7 @@ gui_wait_for_chars(long wtime)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (retval == FAIL)
|
||||
if (retval == FAIL && typebuf.tb_change_cnt == tb_change_cnt)
|
||||
{
|
||||
/* Blocking wait. */
|
||||
before_blocking();
|
||||
|
@ -764,6 +764,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
619,
|
||||
/**/
|
||||
618,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user