diff options
author | nicm <nicm> | 2017-11-02 22:00:42 +0000 |
---|---|---|
committer | nicm <nicm> | 2017-11-02 22:00:42 +0000 |
commit | 43264dfbf410489b36343a29cc83798a54df67f8 (patch) | |
tree | 07ba715e14b2a3f792f9dd6b0a3bcd05c4abeb31 /window-buffer.c | |
parent | 8d37f699ad2406ad96080b0cee211142dbcb33cb (diff) | |
download | rtmux-43264dfbf410489b36343a29cc83798a54df67f8.tar.gz rtmux-43264dfbf410489b36343a29cc83798a54df67f8.tar.bz2 rtmux-43264dfbf410489b36343a29cc83798a54df67f8.zip |
Make the mode draw function use the parent screen directly rather than
its own to avoid copying twice.
Diffstat (limited to 'window-buffer.c')
-rw-r--r-- | window-buffer.c | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/window-buffer.c b/window-buffer.c index 5f58a858..14b15762 100644 --- a/window-buffer.c +++ b/window-buffer.c @@ -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 |