From aaca45d709e628860020f1c423f013e08cdf4e3b Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Fri, 24 Sep 2021 22:34:32 +0100 Subject: gif: Optimise opaque gifs on the complex decode path. --- src/libnsgif.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/libnsgif.c b/src/libnsgif.c index 24dbf7d..2bea30e 100644 --- a/src/libnsgif.c +++ b/src/libnsgif.c @@ -688,13 +688,21 @@ gif__decode_complex(gif_animation *gif, row_available = x < available ? x : available; x -= row_available; available -= row_available; - while (row_available-- > 0) { - register unsigned int colour; - colour = *uncompressed++; - if (colour != transparency_index) { - *frame_scanline = colour_table[colour]; + if (transparency_index > 0xFF) { + while (row_available-- > 0) { + *frame_scanline++ = + colour_table[*uncompressed++]; + } + } else { + while (row_available-- > 0) { + register unsigned int colour; + colour = *uncompressed++; + if (colour != transparency_index) { + *frame_scanline = + colour_table[colour]; + } + frame_scanline++; } - frame_scanline++; } } } -- cgit v1.2.3