From f946bd77abccd6741419cce29aafaa04a43cef60 Mon Sep 17 00:00:00 2001 From: Bedight <129771554+ernestbedight@users.noreply.github.com> Date: Sat, 13 Jan 2024 18:29:49 +0100 Subject: [PATCH] Terminal optimization option added : flanterm_toggle_masking() (#9) * Terminal optimization option added : flanterm_toggle_masking() * Terminal optimization option added * error correction --------- Co-authored-by: ernestbedight --- backends/fb.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/backends/fb.c b/backends/fb.c index 2c95369..e6f3924 100644 --- a/backends/fb.c +++ b/backends/fb.c @@ -476,7 +476,7 @@ static void plot_char(struct flanterm_context *_ctx, struct flanterm_fb_char *c, } } -static void plot_char_fast(struct flanterm_context *_ctx, struct flanterm_fb_char *old, struct flanterm_fb_char *c, size_t x, size_t y) { +static void plot_char_masked(struct flanterm_context *_ctx, struct flanterm_fb_char *old, struct flanterm_fb_char *c, size_t x, size_t y) { struct flanterm_fb_context *ctx = (void *)_ctx; if (x >= _ctx->cols || y >= _ctx->rows) { @@ -765,11 +765,16 @@ static void flanterm_fb_double_buffer_flush(struct flanterm_context *_ctx) { continue; } struct flanterm_fb_char *old = &ctx->grid[offset]; - if (q->c.bg == old->bg && q->c.fg == old->fg) { - plot_char_fast(_ctx, old, &q->c, q->x, q->y); - } else { + #ifdef FLANTERM_FB_ENABLE_MASKING + if (q->c.bg == old->bg && q->c.fg == old->fg) { + plot_char_masked(_ctx, old, &q->c, q->x, q->y); + } else { + plot_char(_ctx, &q->c, q->x, q->y); + } + #else plot_char(_ctx, &q->c, q->x, q->y); - } + #endif + ctx->grid[offset] = q->c; ctx->map[offset] = NULL; }