From 4b883524d8da98b2f00e83437cc06bd65228fc5b Mon Sep 17 00:00:00 2001 From: Tiago Cunha Date: Fri, 21 Aug 2009 21:09:13 +0000 Subject: [PATCH] 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. --- buffer.c | 7 ++----- grid.c | 6 +++++- screen-write.c | 28 ++++++++++++++++------------ 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 @@ -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 @@ -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 @@ -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); + } } } }