From c6384a765b1113fbff54bc3f0126b3a578730b36 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Tue, 27 Nov 2007 21:07:38 +0000 Subject: [PATCH] Flush data on tty open. Also reset colour before clearing line/screen. --- TODO | 4 +++- screen.c | 6 ++++-- tty.c | 8 ++++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/TODO b/TODO index 206c4ce8..6974251c 100644 --- a/TODO +++ b/TODO @@ -57,7 +57,9 @@ - lift SHRT_MAX limits for history - audit copy/scroll and other modes for problems with very small windows - screen_draw_* moved out/renamed (accept TTY_*?) -- SIGWINCH can probably be handled in server -- For 0.2 -------------------------------------------------------------------- - window splitting? +- restore term cap checks +- anything which uses cmd_{send,recv}_string will break if the string is + split. string length should be part of the command size diff --git a/screen.c b/screen.c index 4318cdf5..f83a9142 100644 --- a/screen.c +++ b/screen.c @@ -1,4 +1,4 @@ -/* $Id: screen.c,v 1.51 2007-11-27 19:32:15 nicm Exp $ */ +/* $Id: screen.c,v 1.52 2007-11-27 21:07:38 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -458,6 +458,7 @@ screen_draw_clear_screen(struct screen_draw_ctx *ctx) { u_int i; + screen_draw_set_attributes(ctx, SCREEN_DEFATTR, SCREEN_DEFCOLR); for (i = 0; i < screen_size_y(ctx->s); i++) { screen_draw_move_cursor(ctx, 0, i); screen_draw_clear_line_to(ctx, screen_size_x(ctx->s)); @@ -568,11 +569,12 @@ screen_draw_line(struct screen_draw_ctx *ctx, u_int py) cx = ctx->s->grid_size[cy]; if (ctx->sel.flag || - screen_size_x(ctx->s) < 3 || cx >= screen_size_x(ctx->s) - 3) + screen_size_x(ctx->s) < 5 || cx >= screen_size_x(ctx->s) - 5) screen_draw_cells(ctx, 0, py, screen_size_x(ctx->s)); else { screen_draw_cells(ctx, 0, py, cx); screen_draw_move_cursor(ctx, cx, py); + screen_draw_set_attributes(ctx, SCREEN_DEFATTR, SCREEN_DEFCOLR); ctx->write(ctx->data, TTY_CLEARENDOFLINE); } } diff --git a/tty.c b/tty.c index 582bf299..71a8c616 100644 --- a/tty.c +++ b/tty.c @@ -1,4 +1,4 @@ -/* $Id: tty.c,v 1.4 2007-11-27 20:01:30 nicm Exp $ */ +/* $Id: tty.c,v 1.5 2007-11-27 21:07:38 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -51,7 +51,7 @@ int tty_open(struct tty *tty, char **cause) { struct termios tio; - int error; + int error, what; tty->fd = open(tty->path, O_RDWR|O_NONBLOCK); if (tty->fd == -1) { @@ -103,6 +103,10 @@ tty_open(struct tty *tty, char **cause) if (tcsetattr(tty->fd, TCSANOW, &tio) != 0) fatal("tcsetattr failed"); + what = 0; + if (ioctl(tty->fd, TIOCFLUSH, &what) != 0) + fatal("ioctl(TIOCFLUSH)"); + if (enter_ca_mode != NULL) tty_puts(tty, enter_ca_mode); if (keypad_xmit != NULL)