Correctly clear underscore colour in grid_get_cell1, also fix struct

grid_cell to avoid padding. Fixes increased memory use reported by Suraj
N Kurapati.
This commit is contained in:
nicm 2019-07-06 20:37:29 +00:00
parent 55c694a467
commit 3635b3cd6c
5 changed files with 9 additions and 8 deletions

View File

@ -565,7 +565,7 @@ format_draw(struct screen_write_ctx *octx, const struct grid_cell *base,
cp++;
}
/* Draw the cell to th current screen. */
/* Draw the cell to the current screen. */
screen_write_cell(&ctx[current], &sy.gc);
width[current] += ud->width;
continue;

5
grid.c
View File

@ -37,12 +37,12 @@
/* Default grid cell data. */
const struct grid_cell grid_default_cell = {
0, 0, 8, 8, 0, { { ' ' }, 0, 1, 1 }
{ { ' ' }, 0, 1, 1 }, 0, 0, 8, 8, 0
};
/* Cleared grid cell data. */
const struct grid_cell grid_cleared_cell = {
GRID_FLAG_CLEARED, 0, 8, 8, 0, { { ' ' }, 0, 1, 1 }
{ { ' ' }, 0, 1, 1 }, 0, GRID_FLAG_CLEARED, 8, 8, 0
};
static const struct grid_cell_entry grid_cleared_entry = {
GRID_FLAG_CLEARED, { .data = { 0, 8, 8, ' ' } }
@ -475,6 +475,7 @@ grid_get_cell1(struct grid_line *gl, u_int px, struct grid_cell *gc)
gc->bg = gce->data.bg;
if (gce->flags & GRID_FLAG_BG256)
gc->bg |= COLOUR_FLAG_256;
gc->us = 0;
utf8_set(&gc->data, gce->data.data);
}

View File

@ -36,7 +36,7 @@ static const struct grid_cell *screen_write_combine(struct screen_write_ctx *,
const struct utf8_data *, u_int *);
static const struct grid_cell screen_write_pad_cell = {
GRID_FLAG_PADDING, 0, 8, 8, 0, { { 0 }, 0, 0, 0 }
{ { 0 }, 0, 0, 0 }, 0, GRID_FLAG_PADDING, 0, 8, 8
};
struct screen_write_collect_item {

View File

@ -30,7 +30,7 @@
/* Default style. */
static struct style style_default = {
{ 0, 0, 8, 8, 0, { { ' ' }, 0, 1, 1 } },
{ { { ' ' }, 0, 1, 1 }, 0, 0, 8, 8, 0 },
8,
STYLE_ALIGN_DEFAULT,

6
tmux.h
View File

@ -596,13 +596,13 @@ enum utf8_state {
/* Grid cell data. */
struct grid_cell {
u_char flags;
struct utf8_data data; /* 21 bytes */
u_short attr;
u_char flags;
int fg;
int bg;
int us;
struct utf8_data data;
};
} __packed;
struct grid_cell_entry {
u_char flags;
union {