SUPERSEDES APPROVE COMMIT 21.5 RECOMMEND 21.4
Vin: The patch applies as is to 21.4:
patching file src/ChangeLog
patching file src/process-unix.c
Hunk #1 succeeded at 1327 (offset -218 lines).
>>>> "sjt" == Stephen J Turnbull
<stephen(a)xemacs.org> writes: 
    sjt> As promised, Tony!  Any objections or changes to the
    sjt> ChangeLog you'd like to make?  NB: I did change the comment
    sjt> to C style.
    sjt> 2006-03-24 Tony Bennett <tbennett(a)nvidia.com>
    sjt>    * process-unix.c (Faccept_process_output): Reduce timeout.
My apologies (mostly to Skip) for not getting it into the 21.5.26
release.  Brain needs a patch, I think....  The rationale for delay
was that I wanted to think about implementing the strategy used in
process-nt.c here, too, but that seems like overkill for now.
The semantics are the same as the original patch.  I've fixed the
reference in the changelog, added a comment about the increasing
timeout strategy in the code, and added some rationale to the
changelog per Tony's request.
Index: src/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v
retrieving revision 1.940
diff -u -r1.940 ChangeLog
--- src/ChangeLog	31 Mar 2006 19:20:45 -0000	1.940
+++ src/ChangeLog	1 Apr 2006 15:59:22 -0000
@@ -0,0 +1,7 @@
+2006-03-23  Tony Bennett  <tbennett(a)nvidia.com>
+
+	* process-unix.c (unix_send_process): Reduce timeout for
+	Faccept_process_output to 10ms.  This dramatically speeds up many
+	functions that read from processes, eg, inferior interpreter
+	processes as in ilisp or python-mode.
+
Index: src/process-unix.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/process-unix.c,v
retrieving revision 1.57
diff -u -r1.57 process-unix.c
--- src/process-unix.c	4 Feb 2005 04:06:34 -0000	1.57
+++ src/process-unix.c	1 Apr 2006 15:59:22 -0000
@@ -1545,10 +1545,13 @@
 	    }
 	  while (Lstream_was_blocked_p (XLSTREAM (p->pipe_outstream)))
 	    {
-	      /* Buffer is full.  Wait, accepting input;
-		 that may allow the program
-		 to finish doing output and read more.  */
-	      Faccept_process_output (Qnil, make_int (1), Qnil);
+	      /* Buffer is full.  Wait 10ms, accepting input; that may
+		 allow the program to finish doing output and read more.
+		 Used to be 1s, but that's excruciating.  nt_send_process
+		 uses geometrically increasing timeouts (up to 1s).  This
+		 might be a good idea here.
+	         N.B. timeout_secs = Qnil is faster than Qzero. */
+	      Faccept_process_output (Qnil, Qnil, make_int (10));
 	      /* It could have *really* finished, deleting the process */
 	      if (NILP(p->pipe_outstream))
 		return;
-- 
School of Systems and Information Engineering 
http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba                    Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
               Ask not how you can "do" free software business;
              ask what your business can "do for" free software.