124 |
scrolling = UINT32_MAX - vcons->state.screen.cur_line |
scrolling = UINT32_MAX - vcons->state.screen.cur_line |
125 |
+ 1 + new_cur_line; |
+ 1 + new_cur_line; |
126 |
|
|
127 |
/* If we are scrollbacking, defer scrolling |
/* If we are scrolling back, defer scrolling |
128 |
until absolutely necessary. */ |
until absolutely necessary. */ |
129 |
if (vcons->scrolling) |
if (vcons->scrolling) |
130 |
{ |
{ |
131 |
if (vcons->scrolling + scrolling <= vcons->state.screen.scr_lines) |
if (_cons_jump_down_at_output) |
132 |
{ |
_cons_vcons_scrollback |
133 |
vcons->scrolling += scrolling; |
(vcons, CONS_SCROLL_ABSOLUTE_LINE, 0); |
|
scrolling = 0; |
|
|
} |
|
134 |
else |
else |
135 |
{ |
{ |
136 |
scrolling -= vcons->state.screen.scr_lines - vcons->scrolling; |
if (vcons->scrolling + scrolling |
137 |
vcons->scrolling = vcons->state.screen.scr_lines; |
<= vcons->state.screen.scr_lines) |
138 |
|
{ |
139 |
|
vcons->scrolling += scrolling; |
140 |
|
scrolling = 0; |
141 |
|
} |
142 |
|
else |
143 |
|
{ |
144 |
|
scrolling -= vcons->state.screen.scr_lines |
145 |
|
- vcons->scrolling; |
146 |
|
vcons->scrolling |
147 |
|
= vcons->state.screen.scr_lines; |
148 |
|
} |
149 |
} |
} |
150 |
} |
} |
151 |
|
|
234 |
off_t start = change.matrix.start; |
off_t start = change.matrix.start; |
235 |
off_t end = change.matrix.end; |
off_t end = change.matrix.end; |
236 |
|
|
237 |
|
if (vcons->scrolling && _cons_jump_down_at_output) |
238 |
|
_cons_vcons_scrollback (vcons, CONS_SCROLL_ABSOLUTE_LINE, 0); |
239 |
|
|
240 |
if (vcons->state.screen.cur_line >= vcons->scrolling) |
if (vcons->state.screen.cur_line >= vcons->scrolling) |
241 |
rotate = vcons->state.screen.cur_line - vcons->scrolling; |
rotate = vcons->state.screen.cur_line - vcons->scrolling; |
242 |
else |
else |