--- rxvt-unicode/src/screen.C 2006/01/25 21:09:21 1.252 +++ rxvt-unicode/src/screen.C 2006/01/28 14:23:16 1.254 @@ -128,7 +128,7 @@ l.touch (); - efs &= ~RS_baseattrMask; + efs &= ~RS_baseattrMask; // remove italic etc. fontstyles efs = SET_FONT (efs, FONTSET (efs)->find_font (' ')); text_t *et = l.t + col; @@ -643,14 +643,18 @@ // erase newly scrolled-in lines for (int i = count; i--; ) { - // basically this is a slightly optimized scr_blank_screen_mem - // it is worth the effort on slower machines line_t &l = ROW(nrow - 1 - i); - scr_blank_line (l, 0, l.l, rstyle); - - l.l = 0; - l.f = 0; + // optimize if already cleared, can be significant on slow machines + // could be rolled into scr_blank_screen_mem + if (l.r && l.l < ncol - 1 && !((l.r[l.l + 1] ^ rstyle) & RS_bgMask)) + { + scr_blank_line (l, 0, l.l, rstyle); + l.l = 0; + l.f = 0; + } + else + scr_blank_screen_mem (l, rstyle); } // now copy lines below the scroll region bottom to the