--- rxvt-unicode/src/command.C 2005/12/31 18:19:06 1.220 +++ rxvt-unicode/src/command.C 2006/01/01 13:35:14 1.225 @@ -50,6 +50,10 @@ #include "version.h" #include "command.h" +#if HAVE_SCHED_YIELD +# include +#endif + #ifdef KEYSYM_RESOURCE # include "keyboard.h" #endif @@ -1082,14 +1086,20 @@ 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 (); @@ -4054,6 +4064,9 @@ SET_OPTION (Opt_intensityStyles); else CLR_OPTION (Opt_intensityStyles); + + scr_touch (true); + break; #endif case 1048: /* alternative cursor save */ case 1049: @@ -4315,7 +4328,6 @@ scr_color ((unsigned int) (minBrightCOLOR + (arg[i] - 100)), Color_bg); break; #endif - } } }