From 321387be1df8059ffa28cd4b5786670274fc4d09 Mon Sep 17 00:00:00 2001 From: Ali Gholami Rudi Date: Thu, 9 Jul 2009 12:27:17 +0430 Subject: [PATCH] pad: redraw the cursor after scrolling --- draw.c | 3 +-- pad.c | 10 +++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/draw.c b/draw.c index 4eaa0cf..541f0f8 100644 --- a/draw.c +++ b/draw.c @@ -88,8 +88,7 @@ static char *rowaddr(int r) void fb_scroll(int sr, int nr, int n, u16_t val) { int r; - for (r = sr; r < sr + nr; r++) - memcpy(rowaddr(r + n), rowaddr(r), finfo.line_length); + memmove(rowaddr(sr + n), rowaddr(sr), nr * finfo.line_length); if (n > 0) fb_box(sr, 0, n, sr + n, val); else diff --git a/pad.c b/pad.c index 015bf46..ce6012d 100644 --- a/pad.c +++ b/pad.c @@ -109,16 +109,16 @@ static void pad_empty(int sr, int er) void pad_scroll(int sr, int nr, int n) { - int r; + pad_show(row, col, 0); fb_scroll(sr * font_rows(), nr * font_rows(), n * font_rows(), color2fb(bg)); - for (r = sr; r < sr + nr; r++) - memcpy(SQRADDR(r + n, 0), SQRADDR(r, 0), - cols * sizeof(screen[0])); + memmove(SQRADDR(sr + n, 0), SQRADDR(sr, 0), + nr * cols * sizeof(screen[0])); if (n > 0) pad_empty(sr, sr + n); else pad_empty(sr + nr + n, sr + nr); + pad_show(row, col, 1); } static void advance(int c) @@ -152,8 +152,8 @@ static void advance(int c) if (row >= rows) { int n = rows - row - 1; int nr = rows + n; - pad_scroll(-n, nr, n); row = rows - 1; + pad_scroll(-n, nr, n); } } -- 2.11.4.GIT