… | |
… | |
1958 | { |
1958 | { |
1959 | unsigned char must_clear, /* use draw_string not draw_image_string */ |
1959 | unsigned char must_clear, /* use draw_string not draw_image_string */ |
1960 | showcursor; /* show the cursor */ |
1960 | showcursor; /* show the cursor */ |
1961 | int16_t col, row, /* column/row we're processing */ |
1961 | int16_t col, row, /* column/row we're processing */ |
1962 | ocrow; /* old cursor row */ |
1962 | ocrow; /* old cursor row */ |
1963 | int i, /* tmp */ |
1963 | int i; /* tmp */ |
1964 | row_offset; /* basic offset in screen structure */ |
|
|
1965 | #ifndef NO_CURSORCOLOR |
1964 | #ifndef NO_CURSORCOLOR |
1966 | rend_t cc1; /* store colours at cursor position (s) */ |
1965 | rend_t cc1; /* store colours at cursor position (s) */ |
1967 | #endif |
1966 | #endif |
1968 | rend_t *crp; // cursor rendition pointer |
1967 | rend_t *crp; // cursor rendition pointer |
1969 | |
1968 | |
… | |
… | |
1975 | /* |
1974 | /* |
1976 | * A: set up vars |
1975 | * A: set up vars |
1977 | */ |
1976 | */ |
1978 | must_clear = 0; |
1977 | must_clear = 0; |
1979 | refresh_count = 0; |
1978 | refresh_count = 0; |
1980 | |
|
|
1981 | row_offset = term_start - view_start; |
|
|
1982 | |
1979 | |
1983 | #if XPM_BACKGROUND |
1980 | #if XPM_BACKGROUND |
1984 | must_clear |= bgPixmap.pixmap != None; |
1981 | must_clear |= bgPixmap.pixmap != None; |
1985 | #endif |
1982 | #endif |
1986 | #if TRANSPARENT |
1983 | #if TRANSPARENT |
… | |
… | |
2104 | row = i > 0 ? 0 : j - 1; |
2101 | row = i > 0 ? 0 : j - 1; |
2105 | for (; j-- >= 0; row += (i > 0 ? 1 : -1)) |
2102 | for (; j-- >= 0; row += (i > 0 ? 1 : -1)) |
2106 | { |
2103 | { |
2107 | if (row + i >= 0 && row + i < nrow && row + i != ocrow) |
2104 | if (row + i >= 0 && row + i < nrow && row + i != ocrow) |
2108 | { |
2105 | { |
2109 | line_t s = save[(row + row_offset) % total_rows]; |
2106 | line_t s = ROW(row - view_start); |
2110 | line_t d = drawn[row]; |
2107 | line_t d = drawn[row]; |
2111 | line_t d2 = drawn[row + i]; |
2108 | line_t d2 = drawn[row + i]; |
2112 | |
2109 | |
2113 | for (nits = 0, col = ncol; col--; ) |
2110 | for (nits = 0, col = ncol; col--; ) |
2114 | if (s.t[col] != d2.t[col] || s.r[col] != d2.r[col]) |
2111 | if (s.t[col] != d2.t[col] || s.r[col] != d2.r[col]) |
… | |
… | |
2152 | /* |
2149 | /* |
2153 | * E: main pass across every character |
2150 | * E: main pass across every character |
2154 | */ |
2151 | */ |
2155 | for (row = 0; row < nrow; row++) |
2152 | for (row = 0; row < nrow; row++) |
2156 | { |
2153 | { |
2157 | text_t *stp = save[(row + row_offset) % total_rows].t; |
2154 | text_t *stp = ROW(row - view_start).t; |
2158 | rend_t *srp = save[(row + row_offset) % total_rows].r; |
2155 | rend_t *srp = ROW(row - view_start).r; |
2159 | text_t *dtp = drawn[row].t; |
2156 | text_t *dtp = drawn[row].t; |
2160 | rend_t *drp = drawn[row].r; |
2157 | rend_t *drp = drawn[row].r; |
2161 | |
2158 | |
2162 | /* |
2159 | /* |
2163 | * E2: OK, now the real pass |
2160 | * E2: OK, now the real pass |