From 56b7e3a1b3fed9746e08d288d2eeb8d4fa5c5979 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 1 Jan 2006 05:28:28 +0000 Subject: [PATCH] *** empty log message *** --- Changes | 1 + src/command.C | 19 +++++++++++++++---- src/rxvt.h | 4 ++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Changes b/Changes index 863891ac..b0dbe4eb 100644 --- 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 diff --git a/src/command.C b/src/command.C index f52f1a3d..23090b7b 100644 --- a/src/command.C +++ b/src/command.C @@ -56,6 +56,11 @@ #include +#define HAVE_SCHED_YIELD 1 //D//TODO//FIXME +#if HAVE_SCHED_YIELD +# include +#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 (); diff --git a/src/rxvt.h b/src/rxvt.h index a6e28c9b..6e2f51fc 100644 --- a/src/rxvt.h +++ b/src/rxvt.h @@ -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 -- 2.34.1