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; }