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.
This commit is contained in:
Tiago Cunha
2009-08-21 21:09:13 +00:00
parent 15556ad0d6
commit 4b883524d8
3 changed files with 23 additions and 18 deletions

View File

@ -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);
}
}
}
}