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.212 by root, Fri Jan 6 05:37:59 2006 UTC vs.
Revision 1.216 by root, Mon Jan 9 18:51:19 2006 UTC

145/* Fill a full line with blanks - make sure it is allocated first */ 145/* Fill a full line with blanks - make sure it is allocated first */
146void 146void
147rxvt_term::scr_blank_screen_mem (line_t &l, rend_t efs) 147rxvt_term::scr_blank_screen_mem (line_t &l, rend_t efs)
148{ 148{
149 scr_blank_line (l, 0, ncol, efs); 149 scr_blank_line (l, 0, ncol, efs);
150
151 l.l = 0;
152 l.f = 0;
150} 153}
151 154
152/* ------------------------------------------------------------------------- * 155/* ------------------------------------------------------------------------- *
153 * SCREEN INITIALISATION * 156 * SCREEN INITIALISATION *
154 * ------------------------------------------------------------------------- */ 157 * ------------------------------------------------------------------------- */
639 } 642 }
640 } 643 }
641 644
642 for (int i = count; i--; ) 645 for (int i = count; i--; )
643 { 646 {
644 ROW(row2 - i).l = 0; 647 // basically thi is a slightly optimized scr_blank_screen_mem
645 scr_blank_screen_mem (ROW(row2 - i), rstyle); 648 // it is worth the effort on slower machines
649 line_t &l = ROW(row2 - i);
650
651 scr_blank_line (l, 0, l.l, rstyle);
652
653 l.l = 0;
654 l.f = 0;
646 } 655 }
647 656
648 if (OPTION (Opt_scrollWithBuffer) 657 if (OPTION (Opt_scrollWithBuffer)
649 && view_start != 0 658 && view_start != 0
650 && view_start != saveLines) 659 && view_start != saveLines)
700/* ------------------------------------------------------------------------- */ 709/* ------------------------------------------------------------------------- */
701/* 710/*
702 * Add text given in <str> of length <len> to screen struct 711 * Add text given in <str> of length <len> to screen struct
703 */ 712 */
704void 713void
705rxvt_term::scr_add_lines (const unicode_t *str, int nlines, int len) 714rxvt_term::scr_add_lines (const wchar_t *str, int len, int minlines)
706{ 715{
707 if (len <= 0) /* sanity */ 716 if (len <= 0) /* sanity */
708 return; 717 return;
709 718
710 unsigned char checksel; 719 unsigned char checksel;
711 unicode_t c; 720 unicode_t c;
712 int ncol = this->ncol; 721 int ncol = this->ncol;
713 const unicode_t *strend = str + len; 722 const wchar_t *strend = str + len;
714 723
715 want_refresh = 1; 724 want_refresh = 1;
716 ZERO_SCROLLBACK (); 725 ZERO_SCROLLBACK ();
717 726
718 if (nlines > 0) 727 if (minlines > 0)
719 { 728 {
720 nlines += screen.cur.row - screen.bscroll; 729 minlines += screen.cur.row - screen.bscroll;
721 730
722 if (nlines > 0 731 if (minlines > 0
723 && screen.tscroll == 0 732 && screen.tscroll == 0
724 && screen.bscroll == nrow - 1) 733 && screen.bscroll == nrow - 1)
725 { 734 {
726 /* _at least_ this many lines need to be scrolled */ 735 /* _at least_ this many lines need to be scrolled */
727 scr_scroll_text (screen.tscroll, screen.bscroll, nlines); 736 scr_scroll_text (screen.tscroll, screen.bscroll, minlines);
728 screen.cur.row -= nlines; 737 screen.cur.row -= minlines;
729 } 738 }
730 } 739 }
731 740
732#ifdef DEBUG_STRICT 741#ifdef DEBUG_STRICT
733 assert (screen.cur.col < ncol); 742 assert (screen.cur.col < ncol);
740 749
741 line_t *line = &ROW(row); 750 line_t *line = &ROW(row);
742 751
743 while (str < strend) 752 while (str < strend)
744 { 753 {
745 c = *str++; 754 c = (unicode_t)*str++; // convert to rxvt-unicodes representation
746 755
747 if (c < 0x20) 756 if (c < 0x20)
748 if (c == C0_LF) 757 if (c == C0_LF)
749 { 758 {
750 max_it (line->l, screen.cur.col); 759 max_it (line->l, screen.cur.col);
1303 XChangeGC (display->display, gc, GCForeground, &gcvalue); 1312 XChangeGC (display->display, gc, GCForeground, &gcvalue);
1304 } 1313 }
1305 1314
1306 for (; num--; row++) 1315 for (; num--; row++)
1307 { 1316 {
1308 line_t &l = ROW(row);
1309 l.l = 0;
1310 l.is_longer (0);
1311 scr_blank_screen_mem (l, rstyle); 1317 scr_blank_screen_mem (ROW(row), rstyle);
1312 scr_blank_line (drawn_buf [row], 0, ncol, ren); 1318 scr_blank_line (drawn_buf [row], 0, ncol, ren);
1313 } 1319 }
1314} 1320}
1315 1321
1316#if ENABLE_FRILLS 1322#if ENABLE_FRILLS
2388rxvt_term::scr_remap_chars (line_t &l) 2394rxvt_term::scr_remap_chars (line_t &l)
2389{ 2395{
2390 if (!l.t) 2396 if (!l.t)
2391 return; 2397 return;
2392 2398
2393 l.touch (); // maybe a bit of an overkill, but its not performance-relevant 2399 l.touch (); // maybe a bit of an overkill, but it's not performance-relevant
2394 2400
2395 for (int i = ncol; i--; ) 2401 for (int i = ncol; i--; )
2396 l.r[i] = SET_FONT (l.r[i], FONTSET (l.r[i])->find_font (l.t[i])); 2402 l.r[i] = SET_FONT (l.r[i], FONTSET (l.r[i])->find_font (l.t[i]));
2397} 2403}
2398 2404

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines