From 7603ae5dc3aed92663cd8f999bb8159f0e4e46ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sat, 6 Mar 2021 19:44:26 +0100 Subject: [PATCH] sixel: avoid multiplication inside the inner sixel emitter loop --- sixel.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sixel.c b/sixel.c index bab34015..40c5d938 100644 --- a/sixel.c +++ b/sixel.c @@ -921,13 +921,13 @@ sixel_add(struct terminal *term, uint32_t color, uint8_t sixel) return; } + size_t ofs = term->sixel.pos.row * term->sixel.image.width; + ofs += term->sixel.pos.col; + for (int i = 0; i < 6; i++, sixel >>= 1) { - if (sixel & 1) { - size_t pixel_row = term->sixel.pos.row + i; - size_t stride = term->sixel.image.width; - size_t idx = pixel_row * stride + term->sixel.pos.col; - term->sixel.image.data[idx] = color_with_alpha(term, color); - } + if (sixel & 1) + term->sixel.image.data[ofs] = color_with_alpha(term, color); + ofs += term->sixel.image.width; } xassert(sixel == 0);