ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/screen.C
(Generate patch)

Comparing rxvt-unicode/src/screen.C (file contents):
Revision 1.252 by root, Wed Jan 25 21:09:21 2006 UTC vs.
Revision 1.255 by root, Mon Jan 30 04:27:17 2006 UTC

126 width = ncol; 126 width = ncol;
127 } 127 }
128 128
129 l.touch (); 129 l.touch ();
130 130
131 efs &= ~RS_baseattrMask; 131 efs &= ~RS_baseattrMask; // remove italic etc. fontstyles
132 efs = SET_FONT (efs, FONTSET (efs)->find_font (' ')); 132 efs = SET_FONT (efs, FONTSET (efs)->find_font (' '));
133 133
134 text_t *et = l.t + col; 134 text_t *et = l.t + col;
135 rend_t *er = l.r + col; 135 rend_t *er = l.r + col;
136 136
641 } 641 }
642 642
643 // erase newly scrolled-in lines 643 // erase newly scrolled-in lines
644 for (int i = count; i--; ) 644 for (int i = count; i--; )
645 { 645 {
646 // basically this is a slightly optimized scr_blank_screen_mem
647 // it is worth the effort on slower machines
648 line_t &l = ROW(nrow - 1 - i); 646 line_t &l = ROW(nrow - 1 - i);
649 647
648 // optimize if already cleared, can be significant on slow machines
649 // could be rolled into scr_blank_screen_mem
650 if (l.r && l.l < ncol - 1 && !((l.r[l.l + 1] ^ rstyle) & RS_bgMask))
651 {
650 scr_blank_line (l, 0, l.l, rstyle); 652 scr_blank_line (l, 0, l.l, rstyle);
651
652 l.l = 0; 653 l.l = 0;
653 l.f = 0; 654 l.f = 0;
655 }
656 else
657 scr_blank_screen_mem (l, rstyle);
654 } 658 }
655 659
656 // now copy lines below the scroll region bottom to the 660 // now copy lines below the scroll region bottom to the
657 // bottom of the screen again, so they look as if they 661 // bottom of the screen again, so they look as if they
658 // hadn't moved. 662 // hadn't moved.
1750{ 1754{
1751 bool found = false; 1755 bool found = false;
1752 1756
1753 for (int i = 0; i < nrow; i++) 1757 for (int i = 0; i < nrow; i++)
1754 { 1758 {
1755 int col = 0;
1756 rend_t *drp = drawn_buf[i].r; 1759 rend_t *drp = drawn_buf[i].r;
1757 1760
1758 for (; col < ncol; col++, drp++) 1761 for (int col = 0; col < ncol; col++, drp++)
1759 if ((*drp & mask) == value) 1762 if ((*drp & mask) == value)
1760 { 1763 {
1761 found = true; 1764 found = true;
1762 *drp = ~value; 1765 *drp = ~value;
1763 } 1766 }
2254 && RS_SAME (rend, srp[text - stp - 1])) 2257 && RS_SAME (rend, srp[text - stp - 1]))
2255 text--, count++, xpixel -= fwidth; 2258 text--, count++, xpixel -= fwidth;
2256 2259
2257 // force redraw after "careful" characters to avoid pixel droppings 2260 // force redraw after "careful" characters to avoid pixel droppings
2258 for (int i = 0; srp[col + i] & RS_Careful && col + i < ncol - 1; i++) 2261 for (int i = 0; srp[col + i] & RS_Careful && col + i < ncol - 1; i++)
2259 drp[col + i + 1] = ~srp[col + i + 1]; 2262 drp[col + i + 1] = srp[col + i + 1] ^ RS_redraw;
2260 2263
2261 // force redraw before "careful" characters to avoid pixel droppings 2264 // force redraw before "careful" characters to avoid pixel droppings
2262 for (int i = 0; srp[text - stp - i] & RS_Careful && text - i > stp; i++) 2265 for (int i = 0; srp[text - stp - i] & RS_Careful && text - i > stp; i++)
2263 drp[text - stp - i - 1] = ~srp[text - stp - i - 1]; 2266 drp[text - stp - i - 1] = srp[text - stp - i - 1] ^ RS_redraw;
2264#endif 2267#endif
2265 2268
2266 bool invert = rend & RS_RVid; 2269 bool invert = rend & RS_RVid;
2267 2270
2268#ifndef NO_BOLD_UNDERLINE_REVERSE 2271#ifndef NO_BOLD_UNDERLINE_REVERSE

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines