diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2009-08-12 09:41:59 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2009-08-12 09:41:59 +0000 |
commit | bc497dbb92268004e33c4f1deb09d3cbbeaa48a0 (patch) | |
tree | 24094ca68a000458529f0930ce869edddbcdee91 /tty.c | |
parent | 9a52ef099a28eb1c80f265d122567a4ccf31ba3a (diff) | |
download | rtmux-bc497dbb92268004e33c4f1deb09d3cbbeaa48a0.tar.gz rtmux-bc497dbb92268004e33c4f1deb09d3cbbeaa48a0.tar.bz2 rtmux-bc497dbb92268004e33c4f1deb09d3cbbeaa48a0.zip |
A tty context must not be modified as it may be reused to update multiple
clients, so make it const.
Also fix an actual modification which caused a hang when a session was
connected to multiple terminals at least one of which was missing ich/ich1.
Diffstat (limited to 'tty.c')
-rw-r--r-- | tty.c | 40 |
1 files changed, 21 insertions, 19 deletions
@@ -38,7 +38,7 @@ void tty_attributes(struct tty *, const struct grid_cell *); void tty_attributes_fg(struct tty *, const struct grid_cell *); void tty_attributes_bg(struct tty *, const struct grid_cell *); -void tty_redraw_region(struct tty *, struct tty_ctx *); +void tty_redraw_region(struct tty *, const struct tty_ctx *); void tty_emulate_repeat( struct tty *, enum tty_code_code, enum tty_code_code, u_int); void tty_cell(struct tty *, @@ -461,7 +461,7 @@ tty_emulate_repeat( * width of the terminal. */ void -tty_redraw_region(struct tty *tty, struct tty_ctx *ctx) +tty_redraw_region(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; struct screen *s = wp->screen; @@ -532,7 +532,8 @@ tty_draw_line(struct tty *tty, struct screen *s, u_int py, u_int ox, u_int oy) } void -tty_write(void (*cmdfn)(struct tty *, struct tty_ctx *), struct tty_ctx *ctx) +tty_write(void (*cmdfn)( + struct tty *, const struct tty_ctx *), const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; struct client *c; @@ -563,10 +564,11 @@ tty_write(void (*cmdfn)(struct tty *, struct tty_ctx *), struct tty_ctx *ctx) } void -tty_cmd_insertcharacter(struct tty *tty, struct tty_ctx *ctx) +tty_cmd_insertcharacter(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; struct screen *s = wp->screen; + u_int i; if (wp->xoff != 0 || screen_size_x(s) < tty->sx) { tty_draw_line(tty, wp->screen, ctx->ocy, wp->xoff, wp->yoff); @@ -581,14 +583,14 @@ tty_cmd_insertcharacter(struct tty *tty, struct tty_ctx *ctx) tty_emulate_repeat(tty, TTYC_ICH, TTYC_ICH1, ctx->num); else { tty_putcode(tty, TTYC_SMIR); - while (ctx->num-- > 0) + for (i = 0; i < ctx->num; i++) tty_putc(tty, ' '); tty_putcode(tty, TTYC_RMIR); } } void -tty_cmd_deletecharacter(struct tty *tty, struct tty_ctx *ctx) +tty_cmd_deletecharacter(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; struct screen *s = wp->screen; @@ -605,7 +607,7 @@ tty_cmd_deletecharacter(struct tty *tty, struct tty_ctx *ctx) } void -tty_cmd_insertline(struct tty *tty, struct tty_ctx *ctx) +tty_cmd_insertline(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; struct screen *s = wp->screen; @@ -625,7 +627,7 @@ tty_cmd_insertline(struct tty *tty, struct tty_ctx *ctx) } void -tty_cmd_deleteline(struct tty *tty, struct tty_ctx *ctx) +tty_cmd_deleteline(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; struct screen *s = wp->screen; @@ -645,7 +647,7 @@ tty_cmd_deleteline(struct tty *tty, struct tty_ctx *ctx) } void -tty_cmd_clearline(struct tty *tty, struct tty_ctx *ctx) +tty_cmd_clearline(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; struct screen *s = wp->screen; @@ -664,7 +666,7 @@ tty_cmd_clearline(struct tty *tty, struct tty_ctx *ctx) } void -tty_cmd_clearendofline(struct tty *tty, struct tty_ctx *ctx) +tty_cmd_clearendofline(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; struct screen *s = wp->screen; @@ -683,7 +685,7 @@ tty_cmd_clearendofline(struct tty *tty, struct tty_ctx *ctx) } void -tty_cmd_clearstartofline(struct tty *tty, struct tty_ctx *ctx) +tty_cmd_clearstartofline(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; u_int i; @@ -701,7 +703,7 @@ tty_cmd_clearstartofline(struct tty *tty, struct tty_ctx *ctx) } void -tty_cmd_reverseindex(struct tty *tty, struct tty_ctx *ctx) +tty_cmd_reverseindex(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; struct screen *s = wp->screen; @@ -723,7 +725,7 @@ tty_cmd_reverseindex(struct tty *tty, struct tty_ctx *ctx) } void -tty_cmd_linefeed(struct tty *tty, struct tty_ctx *ctx) +tty_cmd_linefeed(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; struct screen *s = wp->screen; @@ -745,7 +747,7 @@ tty_cmd_linefeed(struct tty *tty, struct tty_ctx *ctx) } void -tty_cmd_clearendofscreen(struct tty *tty, struct tty_ctx *ctx) +tty_cmd_clearendofscreen(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; struct screen *s = wp->screen; @@ -780,7 +782,7 @@ tty_cmd_clearendofscreen(struct tty *tty, struct tty_ctx *ctx) } void -tty_cmd_clearstartofscreen(struct tty *tty, struct tty_ctx *ctx) +tty_cmd_clearstartofscreen(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; struct screen *s = wp->screen; @@ -809,7 +811,7 @@ tty_cmd_clearstartofscreen(struct tty *tty, struct tty_ctx *ctx) } void -tty_cmd_clearscreen(struct tty *tty, struct tty_ctx *ctx) +tty_cmd_clearscreen(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; struct screen *s = wp->screen; @@ -838,7 +840,7 @@ tty_cmd_clearscreen(struct tty *tty, struct tty_ctx *ctx) } void -tty_cmd_alignmenttest(struct tty *tty, struct tty_ctx *ctx) +tty_cmd_alignmenttest(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; struct screen *s = wp->screen; @@ -856,7 +858,7 @@ tty_cmd_alignmenttest(struct tty *tty, struct tty_ctx *ctx) } void -tty_cmd_cell(struct tty *tty, struct tty_ctx *ctx) +tty_cmd_cell(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; @@ -866,7 +868,7 @@ tty_cmd_cell(struct tty *tty, struct tty_ctx *ctx) } void -tty_cmd_utf8character(struct tty *tty, struct tty_ctx *ctx) +tty_cmd_utf8character(struct tty *tty, const struct tty_ctx *ctx) { u_char *ptr = ctx->ptr; size_t i; |