… | |
… | |
254 | |
254 | |
255 | scr_alloc (); |
255 | scr_alloc (); |
256 | |
256 | |
257 | if (!prev_row_buf) |
257 | if (!prev_row_buf) |
258 | { |
258 | { |
259 | /* |
|
|
260 | * first time called (or after scr_release) so just malloc everything: don't rely on realloc |
|
|
261 | */ |
|
|
262 | top_row = 0; |
259 | top_row = 0; |
263 | term_start = 0; |
260 | term_start = 0; |
264 | |
261 | |
265 | memset (charsets, 'B', sizeof (charsets)); |
262 | memset (charsets, 'B', sizeof (charsets)); |
266 | rstyle = DEFAULT_RSTYLE; |
263 | rstyle = DEFAULT_RSTYLE; |
… | |
… | |
291 | { |
288 | { |
292 | /* |
289 | /* |
293 | * add or delete rows as appropriate |
290 | * add or delete rows as appropriate |
294 | */ |
291 | */ |
295 | |
292 | |
|
|
293 | int common_col = min (prev_ncol, ncol); |
|
|
294 | |
296 | for (int row = min (nrow, prev_nrow); row--; ) |
295 | for (int row = min (nrow, prev_nrow); row--; ) |
297 | { |
296 | { |
298 | copy_line (drawn_buf [row], prev_drawn_buf [row]); |
297 | scr_blank_screen_mem (drawn_buf [row], DEFAULT_RSTYLE); |
|
|
298 | memcpy (drawn_buf [row].t, prev_drawn_buf [row].t, sizeof (text_t) * common_col); |
|
|
299 | memcpy (drawn_buf [row].r, prev_drawn_buf [row].r, sizeof (rend_t) * common_col); |
|
|
300 | |
299 | copy_line (swap_buf [row], prev_swap_buf [row]); |
301 | copy_line (swap_buf [row], prev_swap_buf [row]); |
300 | } |
302 | } |
301 | |
303 | |
302 | int p = MOD (term_start + prev_nrow, prev_total_rows); // previous row |
304 | int p = MOD (term_start + prev_nrow, prev_total_rows); // previous row |
303 | int pend = MOD (term_start + top_row , prev_total_rows); |
305 | int pend = MOD (term_start + top_row , prev_total_rows); |