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 <bob@bedight.localdomain>
This commit is contained in:
Bedight 2024-01-13 18:29:49 +01:00 committed by GitHub
parent 845df221dd
commit f946bd77ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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