0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 7.4.1594

Problem:    Timers don't work on Unix.
Solution:   Add missing code.
This commit is contained in:
Bram Moolenaar
2016-03-19 14:11:18 +01:00
parent a889cf4642
commit 943bb2b8eb
2 changed files with 42 additions and 2 deletions

View File

@@ -176,6 +176,7 @@ typedef int waitstatus;
static pid_t wait4pid(pid_t, waitstatus *); static pid_t wait4pid(pid_t, waitstatus *);
static int WaitForChar(long); static int WaitForChar(long);
static int WaitForCharOrMouse(long);
#if defined(__BEOS__) || defined(VMS) #if defined(__BEOS__) || defined(VMS)
int RealWaitForChar(int, long, int *); int RealWaitForChar(int, long, int *);
#else #else
@@ -5347,13 +5348,50 @@ mch_breakcheck(void)
} }
/* /*
* Wait "msec" msec until a character is available from the keyboard or from * Wait "msec" msec until a character is available from the mouse, keyboard,
* inbuf[]. msec == -1 will block forever. * from inbuf[].
* "msec" == -1 will block forever.
* Invokes timer callbacks when needed.
* When a GUI is being used, this will never get called -- webb * When a GUI is being used, this will never get called -- webb
*/ */
static int static int
WaitForChar(long msec) WaitForChar(long msec)
{ {
#ifdef FEAT_TIMERS
long due_time;
long remaining = msec;
/* When waiting very briefly don't trigger timers. */
if (msec >= 0 && msec < 10L)
return WaitForCharOrMouse(msec);
while (msec < 0 || remaining > 0)
{
/* Trigger timers and then get the time in msec until the next one is
* due. Wait up to that time. */
due_time = check_due_timer();
if (due_time <= 0 || (msec > 0 && due_time > remaining))
due_time = remaining;
if (WaitForCharOrMouse(due_time))
return TRUE;
if (msec > 0)
remaining -= due_time;
}
return FALSE;
#else
return WaitForCharOrMouse(msec);
#endif
}
/*
* Wait "msec" msec until a character is available from the mouse or keyboard
* or from inbuf[].
* "msec" == -1 will block forever.
* When a GUI is being used, this will never get called -- webb
*/
static int
WaitForCharOrMouse(long msec)
{
#ifdef FEAT_MOUSE_GPM #ifdef FEAT_MOUSE_GPM
int gpm_process_wanted; int gpm_process_wanted;
#endif #endif

View File

@@ -748,6 +748,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1594,
/**/ /**/
1593, 1593,
/**/ /**/