diff options
Diffstat (limited to 'usr.bin/tmux/window-buffer.c')
| -rw-r--r-- | usr.bin/tmux/window-buffer.c | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/usr.bin/tmux/window-buffer.c b/usr.bin/tmux/window-buffer.c index eaf717d1dfa..b9cc3273198 100644 --- a/usr.bin/tmux/window-buffer.c +++ b/usr.bin/tmux/window-buffer.c @@ -1,4 +1,4 @@ -/* $OpenBSD: window-buffer.c,v 1.10 2017/10/25 11:26:11 nicm Exp $ */ +/* $OpenBSD: window-buffer.c,v 1.11 2017/11/02 22:00:42 nicm Exp $ */ /* * Copyright (c) 2017 Nicholas Marriott <nicholas.marriott@gmail.com> @@ -196,26 +196,20 @@ window_buffer_build(void *modedata, u_int sort_type, __unused uint64_t *tag, } -static struct screen * -window_buffer_draw(__unused void *modedata, void *itemdata, u_int sx, u_int sy) +static void +window_buffer_draw(__unused void *modedata, void *itemdata, + struct screen_write_ctx *ctx, u_int sx, u_int sy) { struct window_buffer_itemdata *item = itemdata; struct paste_buffer *pb; - static struct screen s; - struct screen_write_ctx ctx; char line[1024]; const char *pdata, *end, *cp; size_t psize, at; - u_int i; + u_int i, cx = ctx->s->cx, cy = ctx->s->cy; pb = paste_get_name(item->name); if (pb == NULL) - return (NULL); - - screen_init(&s, sx, sy, 0); - - screen_write_start(&ctx, NULL, &s); - screen_write_clearscreen(&ctx, 8); + return; pdata = end = paste_buffer_data(pb, &psize); for (i = 0; i < sy; i++) { @@ -232,17 +226,14 @@ window_buffer_draw(__unused void *modedata, void *itemdata, u_int sx, u_int sy) line[at] = '\0'; if (*line != '\0') { - screen_write_cursormove(&ctx, 0, i); - screen_write_puts(&ctx, &grid_default_cell, "%s", line); + screen_write_cursormove(ctx, cx, cy + i); + screen_write_puts(ctx, &grid_default_cell, "%s", line); } if (end == pdata + psize) break; end++; } - - screen_write_stop(&ctx); - return (&s); } static int |
