# HG changeset patch # User Kim F. Storm # Date 1073000640 0 # Node ID e93d01ecd0233334d67ccf00dd9b0496f64d577e # Parent 1a5fe79d27f3c60c65956d33576aa46d35e2359e *** empty log message *** diff -r 1a5fe79d27f3 -r e93d01ecd023 etc/NEWS --- a/etc/NEWS Thu Jan 01 23:34:14 2004 +0000 +++ b/etc/NEWS Thu Jan 01 23:44:00 2004 +0000 @@ -1,5 +1,5 @@ GNU Emacs NEWS -- history of user-visible changes. 2003-05-21 -Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. See the end for copying conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. @@ -2523,6 +2523,17 @@ The new low-level functions process-plist and set-process-plist are used to access and replace the entire property list of a process. +??? +*** Adaptive read buffering of subprocess output. + +On some systems, when emacs reads the output from a subprocess, the +output data is read in very small blocks, potentially resulting in +very poor performance. This behaviour can be remedied to some extent +by setting the new variable process-adaptive-read-buffering to a +non-nil value (the default), as it will automatically delay reading +from such processes, to allowing them to produce more output before +emacs tries to read it. + +++ ** Enhanced networking support. diff -r 1a5fe79d27f3 -r e93d01ecd023 src/ChangeLog --- a/src/ChangeLog Thu Jan 01 23:34:14 2004 +0000 +++ b/src/ChangeLog Thu Jan 01 23:44:00 2004 +0000 @@ -1,3 +1,29 @@ +2004-01-02 Kim F. Storm + + * process.h (struct Lisp_Process): New members for adaptive read + buffering: adaptive_read_buffering, read_output_delay, and + read_output_skip. + + * process.c (ADAPTIVE_READ_BUFFERING): New conditional. + (READ_OUTPUT_DELAY_INCREMENT, READ_OUTPUT_DELAY_MAX) + (READ_OUTPUT_DELAY_MAX_MAX): New constants. + (process_output_delay_count, process_output_skip): New vars. + (Vprocess_adaptive_read_buffering): New variable. + (make_process): Initialize adaptive read buffering members. + (Fstart_process): Set adaptive_read_buffering member. + (deactivate_process): Cleanup adaptive read buffering. + (wait_reading_process_input): Temporarily omit delayed + subprocesses from the set of file descriptors to read from; + adjust the select timeout if we skipped any subprocesses. + (read_process_output): Increase adaptive read buffering delay if + we read less than a full buffer; reduce delay when we read a + full buffer. + (send_process): Simplify using local Lisp_Process var. + Reset adaptive read buffering delay after write. + (init_process): Initialize process_output_delay_count and + process_output_skip. + (syms_of_process): DEFVAR_LISP Vprocess_adaptive_read_buffering. + 2004-01-01 Jason Rumney * w32term.c (w32_text_out): Use s->font, for consistency with