Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/5180682 to your computer and use it in GitHub Desktop.
Save anonymous/5180682 to your computer and use it in GitHub Desktop.
0001-Revert-Factor-the-code-to-copy-a-line-into-a-method.patch
From 45722f36932108f2d52c00817175aeeb3aa960ac Mon Sep 17 00:00:00 2001
From: Emmanuel Benisty <benisty.e@gmail.com>
Date: Sat, 16 Mar 2013 12:15:11 +0700
Subject: [PATCH] Revert "Factor the code to copy a line into a method."
This reverts commit 1266c2219cd346106fb0db2088fdfbe380fcc603.
---
src/rxvt.h | 1 -
src/screen.C | 31 ++++++++++++++++++-------------
2 files changed, 18 insertions(+), 14 deletions(-)
diff --git a/src/rxvt.h b/src/rxvt.h
index 8a6c895..e2a8640 100644
--- a/src/rxvt.h
+++ b/src/rxvt.h
@@ -1487,7 +1487,6 @@ struct rxvt_term : zero_initialized, rxvt_vars, rxvt_screen
void scr_kill_char (line_t &l, int col) const NOTHROW;
void scr_set_char_rend (line_t &l, int col, rend_t rend);
int scr_scroll_text (int row1, int row2, int count) NOTHROW;
- void copy_line (line_t &dst, line_t &src);
void scr_reset ();
void scr_release () NOTHROW;
void scr_clear (bool really = false) NOTHROW;
diff --git a/src/screen.C b/src/screen.C
index 2589a08..ff5dcd4 100644
--- a/src/screen.C
+++ b/src/screen.C
@@ -200,16 +200,6 @@ rxvt_term::scr_alloc () NOTHROW
row_buf = swap_buf + nrow;
}
-void
-rxvt_term::copy_line (line_t &dst, line_t &src)
-{
- scr_blank_screen_mem (dst, DEFAULT_RSTYLE);
- dst.l = min (src.l, ncol);
- memcpy (dst.t, src.t, sizeof (text_t) * dst.l);
- memcpy (dst.r, src.r, sizeof (rend_t) * dst.l);
- dst.f = src.f;
-}
-
void ecb_cold
rxvt_term::scr_reset ()
{
@@ -252,6 +242,8 @@ rxvt_term::scr_reset ()
line_t *prev_swap_buf = swap_buf;
line_t *prev_row_buf = row_buf;
+ int common_col = min (prev_ncol, ncol);
+
scr_alloc ();
if (!prev_row_buf)
@@ -295,8 +287,16 @@ rxvt_term::scr_reset ()
for (int row = min (nrow, prev_nrow); row--; )
{
- copy_line (drawn_buf [row], prev_drawn_buf [row]);
- copy_line (swap_buf [row], prev_swap_buf [row]);
+ scr_blank_screen_mem (drawn_buf [row], DEFAULT_RSTYLE);
+ scr_blank_screen_mem (swap_buf [row], DEFAULT_RSTYLE);
+
+ memcpy (drawn_buf [row].t, prev_drawn_buf [row].t, sizeof (text_t) * common_col);
+ memcpy (drawn_buf [row].r, prev_drawn_buf [row].r, sizeof (rend_t) * common_col);
+
+ memcpy (swap_buf [row].t, prev_swap_buf [row].t, sizeof (text_t) * common_col);
+ memcpy (swap_buf [row].r, prev_swap_buf [row].r, sizeof (rend_t) * common_col);
+ swap_buf [row].l = min (prev_swap_buf [row].l, ncol);
+ swap_buf [row].f = prev_swap_buf [row].f;
}
int p = MOD (term_start + prev_nrow, prev_total_rows); // previous row
@@ -401,7 +401,12 @@ rxvt_term::scr_reset ()
line_t &src = prev_row_buf [MOD (term_start + row, prev_total_rows)];
line_t &dst = row_buf [row];
- copy_line (dst, src);
+ scr_blank_screen_mem (dst, DEFAULT_RSTYLE);
+
+ memcpy (dst.t, src.t, sizeof (text_t) * common_col);
+ memcpy (dst.r, src.r, sizeof (rend_t) * common_col);
+ dst.l = min (src.l, ncol);
+ dst.f = src.f;
}
for (int row = prev_nrow; row < nrow; row++)
--
1.8.1.5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment