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:
@@ -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
|
||||||
|
@@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user