From 258388c8907438706f36a30111cd4d25ead86ec9 Mon Sep 17 00:00:00 2001 From: mintsuki Date: Fri, 30 Dec 2022 08:24:51 +0100 Subject: [PATCH] term: Compatibility with new terminal code --- common/drivers/vga_textmode.c | 29 ++++++----------------------- common/lib/readline.c | 4 ++-- common/lib/term.c | 6 ------ common/lib/term.h | 2 +- common/menu.c | 10 +++++----- 5 files changed, 14 insertions(+), 37 deletions(-) diff --git a/common/drivers/vga_textmode.c b/common/drivers/vga_textmode.c index 7833337b..eeab80ee 100644 --- a/common/drivers/vga_textmode.c +++ b/common/drivers/vga_textmode.c @@ -81,20 +81,6 @@ static void text_clear(struct term_context *_ctx, bool move) { } } -static void text_enable_cursor(struct term_context *_ctx) { - struct textmode_context *ctx = (void *)_ctx; - - ctx->cursor_status = true; -} - -static bool text_disable_cursor(struct term_context *_ctx) { - struct textmode_context *ctx = (void *)_ctx; - - bool ret = ctx->cursor_status; - ctx->cursor_status = false; - return ret; -} - static void text_full_refresh(struct term_context *_ctx) { struct textmode_context *ctx = (void *)_ctx; @@ -103,7 +89,7 @@ static void text_full_refresh(struct term_context *_ctx) { ctx->back_buffer[i] = ctx->front_buffer[i]; } - if (ctx->cursor_status) { + if (_ctx->cursor_enabled) { draw_cursor(ctx); ctx->old_cursor_offset = ctx->cursor_offset; } @@ -112,11 +98,11 @@ static void text_full_refresh(struct term_context *_ctx) { static void text_double_buffer_flush(struct term_context *_ctx) { struct textmode_context *ctx = (void *)_ctx; - if (ctx->cursor_status) { + if (_ctx->cursor_enabled) { draw_cursor(ctx); } - if (ctx->cursor_offset != ctx->old_cursor_offset || ctx->cursor_status == false) { + if (ctx->cursor_offset != ctx->old_cursor_offset || _ctx->cursor_enabled == false) { ctx->video_mem[ctx->old_cursor_offset + 1] = ctx->back_buffer[ctx->old_cursor_offset + 1]; } @@ -125,7 +111,7 @@ static void text_double_buffer_flush(struct term_context *_ctx) { continue; } - if (ctx->cursor_status && i == ctx->cursor_offset + 1) { + if (_ctx->cursor_enabled && i == ctx->cursor_offset + 1) { continue; } @@ -133,7 +119,7 @@ static void text_double_buffer_flush(struct term_context *_ctx) { ctx->video_mem[i] = ctx->back_buffer[i]; } - if (ctx->cursor_status) { + if (_ctx->cursor_enabled) { ctx->old_cursor_offset = ctx->cursor_offset; } } @@ -295,7 +281,6 @@ void vga_textmode_init(bool managed) { } ctx->cursor_offset = 0; - ctx->cursor_status = true; ctx->text_palette = 0x07; ctx->video_mem = (volatile uint8_t *)0xb8000; @@ -305,7 +290,7 @@ void vga_textmode_init(bool managed) { // VGA cursor code taken from: https://wiki.osdev.org/Text_Mode_Cursor if (!managed) { - text_disable_cursor(term); + term->cursor_enabled = false; outb(0x3d4, 0x0a); outb(0x3d5, (inb(0x3d5) & 0xc0) | 14); @@ -336,8 +321,6 @@ void vga_textmode_init(bool managed) { term->raw_putchar = text_putchar; term->clear = text_clear; - term->enable_cursor = text_enable_cursor; - term->disable_cursor = text_disable_cursor; term->set_cursor_pos = text_set_cursor_pos; term->get_cursor_pos = text_get_cursor_pos; term->set_text_fg = text_set_text_fg; diff --git a/common/lib/readline.c b/common/lib/readline.c index e1403ed2..6f9f91e6 100644 --- a/common/lib/readline.c +++ b/common/lib/readline.c @@ -352,12 +352,12 @@ again: static void reprint_string(int x, int y, const char *s) { size_t orig_x, orig_y; - term->disable_cursor(term); + term->cursor_enabled = false; term->get_cursor_pos(term, &orig_x, &orig_y); set_cursor_pos_helper(x, y); print("%s", s); set_cursor_pos_helper(orig_x, orig_y); - term->enable_cursor(term); + term->cursor_enabled = true; } static void cursor_back(void) { diff --git a/common/lib/term.c b/common/lib/term.c index be72f5ea..ad121e83 100644 --- a/common/lib/term.c +++ b/common/lib/term.c @@ -41,10 +41,6 @@ static void notready_size_t(struct term_context *ctx, size_t n) { (void)ctx; (void)n; } -static bool notready_disable(struct term_context *ctx) { - (void)ctx; - return false; -} static void notready_move_character(struct term_context *ctx, size_t a, size_t b, size_t c, size_t d) { (void)ctx; (void)a; (void)b; (void)c; (void)d; @@ -68,8 +64,6 @@ static void term_notready(void) { term->raw_putchar = notready_raw_putchar; term->clear = notready_clear; - term->enable_cursor = notready_void; - term->disable_cursor = notready_disable; term->set_cursor_pos = notready_set_cursor_pos; term->get_cursor_pos = notready_get_cursor_pos; term->set_text_fg = notready_size_t; diff --git a/common/lib/term.h b/common/lib/term.h index e3132bc5..fd8c4238 100644 --- a/common/lib/term.h +++ b/common/lib/term.h @@ -25,7 +25,7 @@ extern struct term_context *term; inline void reset_term(void) { term->autoflush = true; - term->enable_cursor(term); + term->cursor_enabled = true;; print("\e[2J\e[H"); term->double_buffer_flush(term); } diff --git a/common/menu.c b/common/menu.c index 6fcbad26..fb4e2b67 100644 --- a/common/menu.c +++ b/common/menu.c @@ -170,7 +170,7 @@ static bool editor_no_term_reset = false; char *config_entry_editor(const char *title, const char *orig_entry) { term->autoflush = false; - term->enable_cursor(term); + term->cursor_enabled = true; print("\e[2J\e[H"); @@ -214,7 +214,7 @@ refresh: invalid_syntax = false; print("\e[2J\e[H"); - term->disable_cursor(term); + term->cursor_enabled = false; { size_t x, y; print("\n"); @@ -423,7 +423,7 @@ refresh: // Hack to redraw the cursor set_cursor_pos_helper(cursor_x, cursor_y); - term->enable_cursor(term); + term->cursor_enabled = true; term->double_buffer_flush(term); @@ -730,7 +730,7 @@ refresh: term->autoflush = false; - term->disable_cursor(term); + term->cursor_enabled = false; print("\e[2J\e[H"); { @@ -747,7 +747,7 @@ refresh: quiet = false; menu_init_term(); term->autoflush = false; - term->disable_cursor(term); + term->cursor_enabled = false; } print("Config file %s.\n\n", config_ready ? "contains no valid entries" : "not found"); print("For information on the format of Limine config entries, consult CONFIG.md in\n");