render: add a 'clean' bit to each cell; only render cells that aren't clean

This patch takes a bit from the foreground color value in a
cell (todo: split up foreground/background into bitfields with a
separate field for 'foreground/background' has been set), and only
re-renders cells that aren't marked as clean.

Note: we use a 'clean' bit rather than a 'dirty' bit to make it easy
to erase cells - we can (keep doing) do that by simply memsetting a
cell range to 0.
This commit is contained in:
Daniel Eklöf 2019-07-30 18:03:03 +02:00
parent c531795b83
commit 85ef9df586
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
7 changed files with 52 additions and 33 deletions

View file

@ -65,8 +65,11 @@ struct attributes {
uint8_t conceal:1;
uint8_t reverse:1;
uint32_t foreground;
uint32_t background;
uint32_t clean:1;
uint32_t foreground:31;
uint32_t reserved:1;
uint32_t background:31;
} __attribute__((packed));
struct cell {