summaryrefslogtreecommitdiff
path: root/usr.bin/tmux/input.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2015-11-13 08:09:29 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2015-11-13 08:09:29 +0000
commit1807e69c6fc53984f200744f88f41cb74d0afb66 (patch)
tree1e3884b98699d369bfce45fb1725cfc553d71b5d /usr.bin/tmux/input.c
parent5ff4709ff7558432f7ee0cb765b3715c28a0f05a (diff)
Long overdue change to the way we store cells in the grid: now, instead
of storing a full grid_cell with UTF-8 data and everything, store a new type grid_cell_entry. This can either be the cell itself (for ASCII cells), or an offset into an extended array (per line) for UTF-8 data. This avoid a large (8 byte) overhead on non-UTF-8 cells (by far the majority for most users) without the complexity of the shadow array we had before. Grid memory without any UTF-8 is about half. The disadvantage that cells can no longer be modified in place and need to be copied out of the grid and back but it turned out to be lot less complicated than I expected.
Diffstat (limited to 'usr.bin/tmux/input.c')
-rw-r--r--usr.bin/tmux/input.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/usr.bin/tmux/input.c b/usr.bin/tmux/input.c
index 8040cb191c7..5665a14adaa 100644
--- a/usr.bin/tmux/input.c
+++ b/usr.bin/tmux/input.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: input.c,v 1.88 2015/11/12 11:09:11 nicm Exp $ */
+/* $OpenBSD: input.c,v 1.89 2015/11/13 08:09:28 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -1006,7 +1006,7 @@ input_print(struct input_ctx *ictx)
else
ictx->cell.cell.attr &= ~GRID_ATTR_CHARSET;
- grid_cell_one(&ictx->cell.cell, ictx->ch);
+ utf8_set(&ictx->cell.cell.data, ictx->ch);
screen_write_cell(&ictx->ctx, &ictx->cell.cell);
ictx->cell.cell.attr &= ~GRID_ATTR_CHARSET;
@@ -1945,7 +1945,7 @@ input_utf8_close(struct input_ctx *ictx)
utf8_append(&ictx->utf8data, ictx->ch);
- grid_cell_set(&ictx->cell.cell, &ictx->utf8data);
+ utf8_copy(&ictx->cell.cell.data, &ictx->utf8data);
screen_write_cell(&ictx->ctx, &ictx->cell.cell);
return (0);