summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTiago Cunha <tcunha@gmx.com>2009-08-21 21:09:13 +0000
committerTiago Cunha <tcunha@gmx.com>2009-08-21 21:09:13 +0000
commit4b883524d8da98b2f00e83437cc06bd65228fc5b (patch)
tree3ef96ab68b0aeae68b7cc7ad0a3d0d178ff6758f
parent15556ad0d67f3c1345fc4d462ab2949816ca7849 (diff)
Sync OpenBSD patchset 282:
A few trivial optimisations: no need to check for zero size if calling buffer_ensure in buffer.c; expand grid lines by a greater increase than one each time; and don't read UTF-8 data unless it actually needs to be checked when overwriting a cell.
-rw-r--r--buffer.c7
-rw-r--r--grid.c6
-rw-r--r--screen-write.c28
3 files changed, 23 insertions, 18 deletions
diff --git a/buffer.c b/buffer.c
index fa9fb35d..76541f71 100644
--- a/buffer.c
+++ b/buffer.c
@@ -1,4 +1,4 @@
-/* $Id: buffer.c,v 1.7 2009-06-25 16:21:32 nicm Exp $ */
+/* $Id: buffer.c,v 1.8 2009-08-21 21:09:13 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -100,9 +100,6 @@ buffer_remove(struct buffer *b, size_t size)
void
buffer_write(struct buffer *b, const void *data, size_t size)
{
- if (size == 0)
- fatalx("zero size");
-
buffer_ensure(b, size);
memcpy(BUFFER_IN(b), data, size);
buffer_add(b, size);
@@ -127,7 +124,7 @@ buffer_write8(struct buffer *b, uint8_t n)
{
buffer_ensure(b, 1);
BUFFER_IN(b)[0] = n;
- buffer_add(b, 1);
+ b->size++;
}
/* Extract an 8-bit value. */
diff --git a/grid.c b/grid.c
index 6b06c3b4..23967871 100644
--- a/grid.c
+++ b/grid.c
@@ -1,4 +1,4 @@
-/* $Id: grid.c,v 1.30 2009-08-10 21:40:21 tcunha Exp $ */
+/* $Id: grid.c,v 1.31 2009-08-21 21:09:13 tcunha Exp $ */
/*
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -198,6 +198,10 @@ grid_expand_line(struct grid *gd, u_int py, u_int sx)
if (sx <= gl->cellsize)
return;
+ if (gl->cellsize > gd->sx / 2)
+ sx = gd->sx;
+ else
+ sx = 1 + gl->cellsize * 2;
gl->celldata = xrealloc(gl->celldata, sx, sizeof *gl->celldata);
for (xx = gl->cellsize; xx < sx; xx++)
grid_put_cell(gd, xx, py, &grid_default_cell);
diff --git a/screen-write.c b/screen-write.c
index bdb624a1..93fc7446 100644
--- a/screen-write.c
+++ b/screen-write.c
@@ -1,4 +1,4 @@
-/* $Id: screen-write.c,v 1.68 2009-08-14 21:32:38 tcunha Exp $ */
+/* $Id: screen-write.c,v 1.69 2009-08-21 21:09:13 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -858,7 +858,8 @@ screen_write_overwrite(struct screen_write_ctx *ctx)
u_int xx;
gc = grid_view_peek_cell(gd, s->cx, s->cy);
- gu = grid_view_peek_utf8(gd, s->cx, s->cy);
+ if (gc->flags & GRID_FLAG_UTF8)
+ gu = grid_view_peek_utf8(gd, s->cx, s->cy);
if (gc->flags & GRID_FLAG_PADDING) {
/*
@@ -885,16 +886,19 @@ screen_write_overwrite(struct screen_write_ctx *ctx)
break;
grid_view_set_cell(gd, xx, s->cy, &grid_default_cell);
}
- } else if (gc->flags & GRID_FLAG_UTF8 && gu->width > 1) {
- /*
- * An UTF-8 wide cell; overwrite following padding cells only.
- */
- xx = s->cx;
- while (++xx < screen_size_x(s)) {
- gc = grid_view_peek_cell(gd, xx, s->cy);
- if (!(gc->flags & GRID_FLAG_PADDING))
- break;
- grid_view_set_cell(gd, xx, s->cy, &grid_default_cell);
+ } else if (gc->flags & GRID_FLAG_UTF8) {
+ gu = grid_view_peek_utf8(gd, s->cx, s->cy);
+ if (gu->width > 1) {
+ /*
+ * An UTF-8 wide cell; overwrite following padding cells only.
+ */
+ xx = s->cx;
+ while (++xx < screen_size_x(s)) {
+ gc = grid_view_peek_cell(gd, xx, s->cy);
+ if (!(gc->flags & GRID_FLAG_PADDING))
+ break;
+ grid_view_set_cell(gd, xx, s->cy, &grid_default_cell);
+ }
}
}
}