]> git.eshelyaron.com Git - emacs.git/commitdiff
*** empty log message ***
authorKim F. Storm <storm@cua.dk>
Thu, 1 Jan 2004 23:44:00 +0000 (23:44 +0000)
committerKim F. Storm <storm@cua.dk>
Thu, 1 Jan 2004 23:44:00 +0000 (23:44 +0000)
etc/NEWS
src/ChangeLog

index ec9aae9357db74df31051862c8f36305a5872763..e904c06c69906fbc20e72132e1ef48a75a17f649 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -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 @@ and modify elements on this property list.
 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.
 
index d70fd85fb89a10d334a5d6232af57d4ebf0ecf23..d5bf5ba7aa909b70811b392bdb5ec35465ddf5f6 100644 (file)
@@ -1,3 +1,29 @@
+2004-01-02  Kim F. Storm  <storm@cua.dk>
+
+       * 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  <jasonr@gnu.org>
 
        * w32term.c (w32_text_out): Use s->font, for consistency with