From ced889e0b884bc4fc285b9ccb06f8e7fcfc94c94 Mon Sep 17 00:00:00 2001 From: Ali Gholami Rudi Date: Sat, 15 Oct 2011 19:21:22 +0330 Subject: [PATCH] term: introduce candraw() to handle lazy and invisible updates --- term.c | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/term.c b/term.c index bbc2e46..018c5c8 100644 --- a/term.c +++ b/term.c @@ -75,27 +75,29 @@ static void _draw_row(int r) } } -static void draw_rows(int sr, int er) +static int candraw(int sr, int er) { int i; - if (!visible) - return; - for (i = sr; i < er; i++) { - if (lazy) + if (visible && !lazy) + return 1; + if (lazy) + for (i = sr; i < er; i++) dirty[i] = 1; - else + return 0; +} + +static void draw_rows(int sr, int er) +{ + int i; + if (candraw(sr, er)) + for (i = sr; i < er; i++) _draw_row(i); - } } static void draw_cols(int r, int sc, int ec) { int i; - if (!visible) - return; - if (lazy) - dirty[r] = 1; - else + if (candraw(r, r + 1)) for (i = sc; i < ec; i++) _draw_pos(r, i, 0); } @@ -106,21 +108,13 @@ static void draw_char(int ch, int r, int c) screen[i] = ch; fgs[i] = fgcolor(); bgs[i] = bgcolor(); - if (!visible) - return; - if (lazy) - dirty[r] = 1; - else + if (candraw(r, r + 1)) _draw_pos(r, c, 0); } static void draw_cursor(int put) { - if (!visible) - return; - if (lazy) - dirty[row] = 1; - else + if (candraw(row, row + 1)) _draw_pos(row, col, put); } -- 2.11.4.GIT