*** empty log message ***
authorroot <root>
Sun, 1 Jan 2006 05:28:28 +0000 (05:28 +0000)
committerroot <root>
Sun, 1 Jan 2006 05:28:28 +0000 (05:28 +0000)
Changes
src/command.C
src/rxvt.h

diff --git a/Changes b/Changes
index 863891acf8e3847a38223f68366c21b4fbc5c1b1..b0dbe4eb23ef9c3dd30bc3ee2af4f4015e3cb51f 100644 (file)
--- a/Changes
+++ b/Changes
@@ -28,6 +28,7 @@ WISH: just for fun, do shade and tint with XRender.
           on a few architectures). Reported by darix.
         - include one trailing space in rectangular selections to indicate
           the inserted newline (yeah, weird, but visually more pleasing).
+        - try to use sched_yield to improve terminal data transfer efficiency.
         - further minor cleanups.
 
 6.1  Tue Dec 27 13:23:40 CET 2005
index f52f1a3dac85718422617f9c89fe21308a4057d1..23090b7b1ccda6eb495f03aa652d832837a3900f 100644 (file)
 
 #include <csignal>
 
+#define HAVE_SCHED_YIELD 1 //D//TODO//FIXME
+#if HAVE_SCHED_YIELD
+# include <sched.h>
+#endif
+
 /*----------------------------------------------------------------------*/
 
 #define IS_CONTROL(ch) !((ch) & 0xffffff60UL)
@@ -1082,14 +1087,20 @@ rxvt_term::pty_fill ()
   cmdbuf_ptr = cmdbuf_base;
   cmdbuf_endp = cmdbuf_ptr + n;
 
-  n = read (pty.pty, cmdbuf_endp, CBUFSIZ - n);
+  ssize_t r = read (pty.pty, cmdbuf_endp, CBUFSIZ - n);
 
-  if (n > 0)
+  if (r > 0)
     {
-      cmdbuf_endp += n;
+      cmdbuf_endp += r;
       return true;
     }
-  else if ((n < 0 && errno != EAGAIN && errno != EINTR) || n == 0)
+  else if (r < 0 && (errno == EAGAIN || errno == EINTR))
+    {
+#if HAVE_SCHED_YIELD
+      sched_yield ();
+#endif
+    }
+  else
     {
       pty_ev.stop ();
 
index a6e28c9b9e0fcea4a0229ab1339149e2cc776679..6e2f51fc15e189c56d4e28442e2ad25580b6d632 100644 (file)
@@ -753,8 +753,8 @@ enum {
 // do not change these constants lightly, there are many interdependencies
 #define IMBUFSIZ               128     // input modifier buffer sizes
 #define KBUFSZ                 512     // size of keyboard mapping buffer
-#define CBUFSIZ                4096    // size of command buffer
-#define UBUFSIZ                4096    // character buffer
+#define CBUFSIZ                2048    // size of command buffer
+#define UBUFSIZ                2048    // character buffer
 
 #ifndef PATH_MAX
 # define PATH_MAX 16384