From f4a403f434e4e768fa6cdbed1c3628bc467e6b0b Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Tue, 13 Sep 2022 09:53:29 +0200 Subject: [PATCH] improve blt_colorfill performance --- src/blt.c | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/src/blt.c b/src/blt.c index d057eda..2805b3e 100644 --- a/src/blt.c +++ b/src/blt.c @@ -387,20 +387,34 @@ void blt_colorfill( if (bpp == 8) { - for (int i = 0; i < dst_h; i++) + if (size == dst_p) { - memset(dst, color, size); - dst += dst_p; + memset(dst, color, dst_p * dst_h); + } + else + { + for (int i = 0; i < dst_h; i++) + { + memset(dst, color, size); + dst += dst_p; + } } } else if (bpp == 16) { if ((color & 0xFF) == ((color >> 8) & 0xFF)) { - for (int i = 0; i < dst_h; i++) + if (size == dst_p) { - memset(dst, color, size); - dst += dst_p; + memset(dst, color, dst_p * dst_h); + } + else + { + for (int i = 0; i < dst_h; i++) + { + memset(dst, color, size); + dst += dst_p; + } } } else @@ -425,10 +439,17 @@ void blt_colorfill( (color & 0xFF) == ((color >> 16) & 0xFF) && (color & 0xFF) == ((color >> 24) & 0xFF)) { - for (int i = 0; i < dst_h; i++) + if (size == dst_p) { - memset(dst, color, size); - dst += dst_p; + memset(dst, color, dst_p * dst_h); + } + else + { + for (int i = 0; i < dst_h; i++) + { + memset(dst, color, size); + dst += dst_p; + } } } else