--- rxvt-unicode/src/command.C 2005/12/31 18:27:57 1.221 +++ rxvt-unicode/src/command.C 2006/01/01 06:18:20 1.224 @@ -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,10 @@ SET_OPTION (Opt_intensityStyles); else CLR_OPTION (Opt_intensityStyles); + + want_refresh = 1; + want_full_refresh = 1; + break; #endif case 1048: /* alternative cursor save */ case 1049: