287,9 → 287,12 |
/** Process a character from the client (TTY emulation). */ |
static void write_char(console_t *cons, wchar_t ch) |
{ |
bool flush_cursor = false; |
|
switch (ch) { |
case '\n': |
fb_pending_flush(); |
flush_cursor = true; |
cons->scr.position_y++; |
cons->scr.position_x = 0; |
break; |
315,8 → 318,10 |
cons->scr.position_x++; |
} |
|
if (cons->scr.position_x >= cons->scr.size_x) |
if (cons->scr.position_x >= cons->scr.size_x) { |
flush_cursor = true; |
cons->scr.position_y++; |
} |
|
if (cons->scr.position_y >= cons->scr.size_y) { |
fb_pending_flush(); |
327,7 → 332,9 |
if (cons == active_console) |
async_msg_1(fb_info.phone, FB_SCROLL, 1); |
} |
|
|
if (cons == active_console && flush_cursor) |
curs_goto(cons->scr.position_x, cons->scr.position_y); |
cons->scr.position_x = cons->scr.position_x % cons->scr.size_x; |
} |
|
482,9 → 489,6 |
write_char(cons, ch); |
} |
|
if (cons == active_console) |
curs_goto(cons->scr.position_x, cons->scr.position_y); |
|
async_serialize_end(); |
|
gcons_notify_char(cons->index); |