Patch 7.4.1594
Problem:    Timers don't work on Unix.
Solution:   Add missing code.
Files:      src/os_unix.c


*** ../vim-7.4.1593/src/os_unix.c       2016-03-11 22:52:00.738438072 +0100
--- src/os_unix.c       2016-03-19 14:05:21.646727700 +0100
***************
*** 176,181 ****
--- 176,182 ----
  static pid_t wait4pid(pid_t, waitstatus *);
  
  static int  WaitForChar(long);
+ static int  WaitForCharOrMouse(long);
  #if defined(__BEOS__) || defined(VMS)
  int  RealWaitForChar(int, long, int *);
  #else
***************
*** 5347,5359 ****
  }
  
  /*
!  * Wait "msec" msec until a character is available from the keyboard or from
!  * inbuf[]. msec == -1 will block forever.
   * When a GUI is being used, this will never get called -- webb
   */
      static int
  WaitForChar(long msec)
  {
  #ifdef FEAT_MOUSE_GPM
      int               gpm_process_wanted;
  #endif
--- 5348,5397 ----
  }
  
  /*
!  * Wait "msec" msec until a character is available from the mouse, keyboard,
!  * from inbuf[].
!  * "msec" == -1 will block forever.
!  * Invokes timer callbacks when needed.
   * When a GUI is being used, this will never get called -- webb
   */
      static int
  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
      int               gpm_process_wanted;
  #endif
*** ../vim-7.4.1593/src/version.c       2016-03-19 13:49:39.460590857 +0100
--- src/version.c       2016-03-19 14:06:12.342197470 +0100
***************
*** 750,751 ****
--- 750,753 ----
  {   /* Add new patch number below this line */
+ /**/
+     1594,
  /**/

-- 
ASCII stupid question, get a stupid ANSI.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui