Use tsetdirt in tscrollup and tscrolldown.

tscrollup and tscrolldown do not use tsetdirt, but their code is
equivalent to

        tsetdirt(orig, term.bot-n);
        tsetdirt(orig+n, term.bot);

tclearregion also marks cleared lines as dirty.
In tscrolldown it sets lines from term.bot-n+1 to term.bot dirty, and in
tscrollup it sets lines from orig to orig+n-1 dirty.

In both functions all lines from orig to term.bot are effectively set
dirty, but in tscrolldown lines from orig+n to term.bot are set dirty
twice, and in tscrollup lines from orig to term.bot-n are set dirty
twice.

These patches make it clear which lines are set dirty and sets them
dirty once in each funciton.
master
noname 11 years ago committed by Roberto E. Vargas Caballero
parent f9dc374ea0
commit 3afdb4ff04

10
st.c

@ -1399,14 +1399,13 @@ tscrolldown(int orig, int n) {
LIMIT(n, 0, term.bot-orig+1); LIMIT(n, 0, term.bot-orig+1);
tclearregion(0, term.bot-n+1, term.col-1, term.bot); tclearregion(0, term.bot-n+1, term.col-1, term.bot);
tsetdirt(orig, term.bot-n);
tsetdirt(orig+n, term.bot);
for(i = term.bot; i >= orig+n; i--) { for(i = term.bot; i >= orig+n; i--) {
temp = term.line[i]; temp = term.line[i];
term.line[i] = term.line[i-n]; term.line[i] = term.line[i-n];
term.line[i-n] = temp; term.line[i-n] = temp;
term.dirty[i] = 1;
term.dirty[i-n] = 1;
} }
selscroll(orig, n); selscroll(orig, n);
@ -1419,14 +1418,13 @@ tscrollup(int orig, int n) {
LIMIT(n, 0, term.bot-orig+1); LIMIT(n, 0, term.bot-orig+1);
tclearregion(0, orig, term.col-1, orig+n-1); tclearregion(0, orig, term.col-1, orig+n-1);
tsetdirt(orig, term.bot-n);
tsetdirt(orig+n, term.bot);
for(i = orig; i <= term.bot-n; i++) { for(i = orig; i <= term.bot-n; i++) {
temp = term.line[i]; temp = term.line[i];
term.line[i] = term.line[i+n]; term.line[i] = term.line[i+n];
term.line[i+n] = temp; term.line[i+n] = temp;
term.dirty[i] = 1;
term.dirty[i+n] = 1;
} }
selscroll(orig, -n); selscroll(orig, -n);

Loading…
Cancel
Save