sixel: avoid looking up color from palette for each sixel

Instead, do the palette lookup when we receive the DECGCI (i.e. when
the palette entry is selected), and store the actual color value in
our sixel struct.
This commit is contained in:
Daniel Eklöf 2021-09-05 11:08:13 +02:00
parent f9642e9597
commit 47c32d5913
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 4 additions and 3 deletions

View file

@ -1272,8 +1272,6 @@ sixel_add(struct terminal *term, int col, int width, uint32_t color, uint8_t six
static void
sixel_add_many(struct terminal *term, uint8_t c, unsigned count)
{
uint32_t color = term->sixel.palette[term->sixel.color_idx];
int col = term->sixel.pos.col;
int width = term->sixel.image.width;
@ -1283,6 +1281,7 @@ sixel_add_many(struct terminal *term, uint8_t c, unsigned count)
return;
}
uint32_t color = term->sixel.color;
for (unsigned i = 0; i < count; i++, col++)
sixel_add(term, col, width, color, c);
@ -1509,7 +1508,8 @@ decgci(struct terminal *term, uint8_t c)
break;
}
}
}
} else
term->sixel.color = term->sixel.palette[term->sixel.color_idx];
term->sixel.state = SIXEL_DECSIXEL;
sixel_put(term, c);